17

老实说,我只是不明白为什么这是返回None而不是反向列表:

>>> l = range(10)
>>> print l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print l.reverse()
None

为什么会这样?根据文档,我没有做错任何事。

4

4 回答 4

35

reverse修改列表并返回None. 如果你这样做

l.reverse()
print l

您将看到您的列表已被修改。

于 2013-10-10T15:10:01.200 回答
9

L.reverse()就地修改 L。作为一般规则,Python 内置方法要么会发生变异,要么会返回一些东西,但不会两者兼而有之

反转列表的常用方法是使用

print L[::-1]

reversed(L)返回 alistreverseiterator object可以很好地迭代,但如果你真的想要一个列表,那就不太好

[::-1]只是一个普通的切片- 步骤是-1让您从结尾开始并以开头结尾

于 2013-10-10T15:13:14.710 回答
6

list.reverse()将列表反转到位。它不会返回反向列表。为此,使用reversed()功能:

print reversed(l)

或者只使用扩展切片符号:

print l[::-1]
于 2013-10-10T15:10:19.037 回答
3

文档说

list.reverse() :原地反转列表的元素。

in place意味着原始列表被更改,而不是返回一个新列表,所以你要求它打印的返回是None.

于 2013-10-10T15:14:52.367 回答