一尘不染

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

python

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

请让我知道如何从这两种方法获得结果:

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

阅读 1589

收藏
2020-02-19

共2个答案

一尘不染

简单的升序排序非常简单,请调用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]
2020-02-19
一尘不染

.sort()和.reverse()更改列表中的位置,并返回None参见可变序列文件:

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

这些方法返回一个新列表,并保持原始输入列表不变。

演示,原位排序和反向:

>>> 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]
2020-02-19