在Python中对列表进行排序

28

我有这个列表

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

但是现在我想按照以下方式对列表进行排序:

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

你可以看到,我想按照从高到低的顺序排序,无论每个数字的符号如何,但要保留符号,清楚吗?

3个回答

59

使用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]

16

使用:

    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参数。


1
sorted([5, 2, 3, 1, 4])

更多细节请参见此处


尝试使用给定的输入列表运行此代码,并检查结果是否与预期结果相匹配。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接