在python中对列表进行排序

Die*_*ini 10 python sorting list absolute-value

我有这个清单

[1,-5,10,6,3,-4,-9]
Run Code Online (Sandbox Code Playgroud)

但现在我希望列表按如下方式排序:

[10,-9,6,-5,-4,3,1]
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,无论每个号码有什么标志,我都要从高到低订购,但保持标志,是否清楚?

Ash*_*ary 39

使用abs的关键sorted功能或list.sort:

>>> lis = [1,-5,10,6,3,-4,-9]
>>> sorted(lis, key=abs, reverse=True)
[10, -9, 6, -5, -4, 3, 1]
Run Code Online (Sandbox Code Playgroud)


Luc*_*iro 11

使用:

    l.sort(key= abs, reverse = True)
Run Code Online (Sandbox Code Playgroud)

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

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

>>> l = [1,-5,10,6,3,-4,-9]
Run Code Online (Sandbox Code Playgroud)

将按照原样排序

>>>  [abs(1),abs(-5),abs(10),abs(6),abs(3),abs(-4),abs(-9)]
Run Code Online (Sandbox Code Playgroud)

应该是:

>>> [1 ,-4 ,-5 ,6 ,-9 ,10]
Run Code Online (Sandbox Code Playgroud)

要从最大到小的顺序,请使用reverse = True参数.