Python

时间:2015-06-10 02:48:21

标签: python python-3.x

我使用两种不同的方式来创建反向列表 第一种方式:

>>> a=list(range(3))  
>>> a.reverse()  
>>> print(a) 
[2,1,0]   

第二种方式:

>>> a=list(range(3)).reverse()
>>> print(a)
None   

为什么第二种方法不起作用?感谢您的帮助。

3 个答案:

答案 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()会改变列表,但不会返回列表。

为什么他们选择以这种方式实施,我不知道。也许是为了节省记忆。