sort()和reverse()函数不起作用
我试图根据我正在阅读的教程来testingPython中的列表是如何工作的。 当我尝试使用list.sort()
或list.reverse()
,解释器给我None
。
请让我知道如何从这两种方法得到结果:
a = [66.25, 333, 333, 1, 1234.5] print(a.sort()) print(a.reverse())
.sort()
和.reverse()
更改列表并返回None
请参阅可变序列文档 :
sort()
和reverse()
方法在sorting或反转大型列表时,修改列表以实现空间节约。 为了提醒您,他们以副作用的方式操作,他们不会返回sorting或反向列表。
做这个,而不是:
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
这些方法返回一个新的列表,并保持原来的input列表不变。
演示,就地分拣和倒车:
>>> 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]
并创build新的sorting和反向列表:
>>> 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]
作为参考,你可以在这里看到文档具体说:
sort()和reverse()方法在sorting或反转大型列表时,修改列表以实现空间节约。 为了提醒您,他们以副作用的方式操作,他们不会返回sorting或反向列表。
不要害怕阅读手册!
这种方法运作到位。
这段代码有效(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]
简单的升序很简单,调用sorted()函数。 它返回一个新的sorting列表:
>>> 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]