我使用两种不同的方式来创建反向列表 第一种方式:
>>> a=list(range(3))
>>> a.reverse()
>>> print(a)
[2,1,0]
第二种方式:
>>> a=list(range(3)).reverse()
>>> print(a)
None
为什么第二种方法不起作用?感谢您的帮助。
答案 0 :(得分:6)
失败是因为reverse
更改了列表(即它没有创建新列表),并且像大多数在其中运行的函数一样,它返回None
。
在你的第一个例子中
a=list(range(3))
a.reverse()
print a
将a
作为list(range(3))
的返回值捕获时,它会正常工作,返回list
。然后,您将该列表反转并打印出来。一切都好!
在你的第二个例子中
a=list(range(3)).reverse()
print(a)
a
等于reverse()
(不是list(range(3))
)的返回值。
在临时列表中调用reverse
并返回None
,这是分配给a
的值。
答案 1 :(得分:3)
为什么第二种方式不起作用?
.reverse()
不返回列表(它返回None
)。它会修改您传递给它的参数。
您需要像第一种方法一样:
a=list(range(3))
a.reverse()
print(a)
答案 2 :(得分:2)
因为.reverse()
会改变列表,但不会返回列表。
为什么他们选择以这种方式实施,我不知道。也许是为了节省记忆。