-5

我有这个包含正负元素的列表,但现在我需要对列表进行排序并将其置于绝对值中,例如:

list[-2,-3,8,-5,1,7]===>list[1,2,3,5,7,8] 清楚吗?编码:

a=5
b=6
c=-3
d=-8

lista = [a,b,c,d]
lista.sort()
lista.reverse()
4

5 回答 5

4

您可以使用 mapabs函数来完成此操作:

In [1]: sorted(map(abs, lista))
Out[1]: [1, 2, 3, 5, 7, 8]

要使用您编写的代码执行此操作,您可以

# The list defined above
lista = [a,b,c,d]

# Sorted from least to greatest absolute value
sorted_abs_list = sorted(map(abs, lista))

# Sorted from greatest to least absolute value
sorted_abs_list = sorted(map(abs, lista), reverse=True)
于 2013-10-04T14:04:27.170 回答
1

你可以这样试试

>>> list[-2,-3,8,-5,1,7]
>>> list = [ i if i > 0 else -i for i in list]
>>> list.sort()
>>> list
[1, 2, 3, 5, 7, 8]
>>> 

或者

>>> list[-2,-3,8,-5,1,7]
>>> list = [ abs(i) for i in list]
>>> list.sort()
>>> list
[1, 2, 3, 5, 7, 8]
于 2013-10-04T14:15:24.340 回答
0
sorted([abs(el) for el in lista])
于 2013-10-04T14:04:03.243 回答
0

如果您想按绝对值对它们进行排序,但让列表保持其原始值:

lista = [-2, -3, 8, -5, 1, 7]

lista.sort(key=lambda x: abs(x))

lista 

Out: [1, -2, -3, -5, 7, 8]
于 2016-04-20T22:32:35.060 回答
0
lista = [-2, -3, 8, -5, 1, 7]

lista.sort(key=abs)

lista 

你可以试试上面的代码。

于 2016-06-02T02:13:52.363 回答