reverse()不适用于Python文字?

时间:2011-07-26 08:44:29

标签: python

为什么这不适用于Python?

>>> print [0,1,0,1,1,0,1,1,1,0,1,1,1,1,0].reverse() 
None

我希望以相反的顺序返回列表。

5 个答案:

答案 0 :(得分:52)

>>> a = [3, 4, 5]
>>> print a.reverse()
None
>>> a
[5, 4, 3]
>>>

这是因为reverse()不返回列表,而是反转列表。因此,a.reverse()的返回值为None,显示在print中。

答案 1 :(得分:23)

如果您希望它以相反的顺序返回新列表,则可以使用[::-1]

>>> [0,1,0,1,1,0,1,1,1,0,1,1,1,1,0][::-1]
[0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0]

由于我还在尝试理解downvote,如果原始列表发生变化并不重要,请使用@taskinoor's answer,它会更快。

但是,如果您要求保持原始列表不变,建议您使用[::-1]

from time import time
lst = [0,1,0,1,1,0,1,1,1,0,1,1,1,1,0]

s = time()
for i in xrange(5000000):
    a = lst[::-1]          # creates a reversed list
print time() -s

s = time()
for i in xrange(5000000):
    b = lst[:]             # copies the list
    b.reverse()            # reverses it
print time() -s

输出

2.44950699806
3.02573299408

答案 2 :(得分:22)

如果您想要反向复制列表,请使用reversed

>>> list(reversed([1,2,3,4]))
[4, 3, 2, 1]

P.S。 reversed返回迭代器而不是列表的副本(如[][::1]那样)。所以它适合你需要迭代反向迭代。此处的其他list()仅用于演示。

答案 3 :(得分:3)

只是为了补充其他答案。别忘了:

>> reversed_iterator = reversed([0,1,0,1,1,0,1,1,1,0,1,1,1,1,0])
>> print list(reversed_iterator)
[0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0]

这样,如果需要这样,您的列表就会保持不变。

答案 4 :(得分:1)

反向更改列表变量,如此处所示 list reverse

如果你在逆转之后打印它会显示出正确的

所以只需使用变量