为什么Python 2.5.2会有以下行为?
>>>[2].extend([]) == [2]
False
>>> [2].extend([]) == None
True
$ python --version
Python 2.5.2
我想我在这里理解有误,但直觉上我认为[2].extend([])应该得到[2]。
Extend 是列表的一个方法,它可以修改这个列表,但不会返回 self
(而是返回 None
)。如果你需要修改后的值作为表达式的值,可以使用 +
运算符,例如 [2]+[]
。
没错。
>>> x = [2]
>>> x.extend([]) # Nothing is printed because the return value is None
>>> x == [2]
True
>>> x
[2]
他们有意这样做是为了让你记住extend()函数实际上是原地修改列表的。sort()函数也是一样,它总是返回None。
print [2].extend([])
即可。 - tzot