sort()和reverse()函数不起作用

时间:2013-05-09 11:23:59

标签: python list sorting

我试图根据我正在阅读的教程测试python中的列表是如何工作的。 当我尝试使用list.sort()list.reverse()时,口译员会给我None

请告诉我如何从这两种方法中获得结果:

a = [66.25, 333, 333, 1, 1234.5]
print(a.sort())
print(a.reverse())

4 个答案:

答案 0 :(得分:36)

.sort().reverse()更改列表到位并返回None请参阅mutable sequence documentation

  

sort()reverse()方法在排序或反转大型列表时修改列表以确保空间经济性。为了提醒您它们是由副作用操作的,它们不会返回已排序或反转的列表。

请改为:

a.sort()
print(a)
a.reverse()
print(a)

或使用sorted()reversed()函数。

print(sorted(a))               # just sorted
print(list(reversed(a)))       # just reversed
print(a[::-1])                 # reversing by using a negative slice step
print(sorted(a, reverse=True)) # sorted *and* reversed

这些方法返回 new 列表并保持原始输入列表不变。

演示,就地排序和倒车:

>>> a = [66.25, 333, 333, 1, 1234.5]
>>> a.sort()
>>> print(a)
[1, 66.25, 333, 333, 1234.5]
>>> a.reverse()
>>> print(a)
[1234.5, 333, 333, 66.25, 1]

创建新的排序和反转列表:

>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print(sorted(a))
[1, 66.25, 333, 333, 1234.5]
>>> print(list(reversed(a)))
[1234.5, 1, 333, 333, 66.25]
>>> print(a[::-1])
[1234.5, 1, 333, 333, 66.25]
>>> print(sorted(a, reverse=True))
[1234.5, 333, 333, 66.25, 1]
>>> a  # input list is untouched
[66.25, 333, 333, 1, 1234.5]

答案 1 :(得分:1)

作为参考,您可以看到文档here具体说明:

  

sort()和reverse()方法在排序或反转大型列表时修改列表以便经济空间。为了提醒您它们是由副作用操作的,它们不会返回已排序或反转的列表。

不要害怕阅读手册!

答案 2 :(得分:1)

简单的升序排序很容易,调用sorted()函数。它返回一个新的排序列表:

>>> sorted([66.25, 333, 333, 1, 1234.5])
[1, 66.25, 333, 333, 1234.5]

sorted()接受带有布尔值的反向参数。

>>> sorted([66.25, 333, 333, 1, 1234.5], reverse=True)
[1234.5, 333, 333, 66.25, 1]

答案 3 :(得分:0)

此方法适用于此。

此代码有效(python 3.x)

a = [66.25, 333, 333, 1, 1234.5]
a.sort()
print(a)
a.reverse()
print(a)

>>> 
[1, 66.25, 333, 333, 1234.5]
[1234.5, 333, 333, 66.25, 1]