这就是我在python shell中所做的:
>>>[1, 2]
...[1, 2]
>>>[1, 2].extend([2,3]) #when I pressed Enter
>>>
#nothing came out
然后我尝试了别的东西:
>>>l = [1, 2]
>>>l
...[1, 2]
>>>m = [1, 2].extend([2, 3])
>>>m #pressed Enter, nothing came out
>>>m is None
...True
为什么呢? 这是不是意味着,我不能做像
这样的事情>>>m = [...].extend(...)
答案 0 :(得分:5)
不,你不能,extend
(如追加,弹出......)在不返回任何内容的情况下修改对象。
列表对象是可变对象,可以修改它们而无需重新创建。
在你的情况下,你必须做
>>>l = [1,2]
>>>l.extend([2,3])
>>>l
[1,2,2,3]
如果您更改l
的类型,假设这是另一个对象,我们称之为class Foo
,您希望将其视为
foo = Foo()
foo.modify_object("here are modifications")
您是否期望修改foo对象之类的内容,并且该方法没有返回任何内容?
答案 1 :(得分:2)
你总是可以做m = [...] + [...]。
答案 2 :(得分:0)
>>> l = [1, 2]
>>> l.extend([2, 3])
>>> l
[1, 2, 2, 3]
>>>
几乎所有列表操作都会修改到位列表,例如
>>> m = [1, 2, 5, 6, 7, 1, 2, 4]
>>> m.sort()
>>> m
[1, 1, 2, 2, 4, 5, 6, 7]