20

我有这个清单

[1,-5,10,6,3,-4,-9]

但现在我希望列表像这样排序:

[10,-9,6,-5,-4,3,1]

如您所见,无论每个数字有什么标志,我都想从高到低排序,但是保持标志,清楚吗?

4

3 回答 3

51

用作函数abs的键sortedlist.sort

>>> lis = [1,-5,10,6,3,-4,-9]
>>> sorted(lis, key=abs, reverse=True)
[10, -9, 6, -5, -4, 3, 1]
于 2013-10-05T16:28:01.107 回答
13

利用:

    l.sort(key= abs, reverse = True)

可以使用 sort() 方法对列表进行排序。sort 方法有一个参数,叫做 key,你可以传递一个函数。使用此参数,您的列表将不会按列表的值排序,而是按列表中函数的值排序。

在您的情况下,您应该使用 abs() 函数,它将返回列表元素的绝对值。所以,你的清单

>>> l = [1,-5,10,6,3,-4,-9]

将按原样排序

>>>  [abs(1),abs(-5),abs(10),abs(6),abs(3),abs(-4),abs(-9)]

应该是:

>>> [1 ,-4 ,-5 ,6 ,-9 ,10]

要从最大到最小排序,也可以使用 reverse=True 参数。

于 2013-10-05T16:29:01.193 回答
2
sorted([5, 2, 3, 1, 4])

有关更多详细信息,请参见此处

于 2021-04-30T02:49:33.530 回答