在python shell中尝试这个:list.extend / append

时间:2011-09-16 08:39:24

标签: python list

这就是我在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(...)

3 个答案:

答案 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]