我试图根据我正在阅读的教程测试 python 中的列表是如何工作的。当我尝试使用list.sort()
orlist.reverse()
时,解释器给了我None
.
请让我知道如何从这两种方法中获得结果:
a = [66.25, 333, 333, 1, 1234.5]
print(a.sort())
print(a.reverse())
.sort()
并.reverse()
更改列表并返回None
查看可变序列文档:
sort()
和方法在reverse()
对大列表进行排序或反转时修改列表以节省空间。提醒您,它们是按副作用操作的,它们不会返回已排序或反转的列表。
改为这样做:
a.sort()
print(a)
a.reverse()
print(a)
或使用sorted()
andreversed()
函数。
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]
简单的升序排序很简单,调用 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() 方法在对大列表进行排序或反转时修改列表以节省空间。提醒您,它们是按副作用操作的,它们不会返回已排序或反转的列表。
不要害怕阅读手册!
这种方法就地运行。
此代码有效(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]