我试图根据我正在阅读的教程测试python中的列表如何工作。当我尝试使用list.sort()or时list.reverse(),口译员给了我None。
list.sort()o
list.reverse()
None
请让我知道如何从这两种方法获得结果:
a = [66.25, 333, 333, 1, 1234.5] print(a.sort()) print(a.reverse())
简单的升序排序非常简单,请调用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]
.sort()和.reverse()更改列表中的位置,并返回None参见可变序列文件:
.sort()
reverse()
在sort()和reverse()排序或反向的大名单时,方法的空间经济性修改到位名单。为了提醒你,它们是副作用,它们不会返回已排序或反向的列表。
sort()
而是这样做:
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
这些方法返回一个新列表,并保持原始输入列表不变。
演示,原位排序和反向:
>>> 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]