在pythonshell中试试这个:list.extend/append

在pythonshell中试试这个:list.extend/append,python,list,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(

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

不,
extend
(作为append,pop…)在不返回任何内容的情况下修改对象

列表对象是可变对象,无需重新创建即可对其进行修改

在你的情况下,你必须这样做

>>>l = [1,2]
>>>l.extend([2,3])
>>>l
[1,2,2,3]
如果您更改
l
的类型,假设这是另一个对象,我们将其称为
class Foo
,您希望它的返回值是什么

foo = Foo()
foo.modify_object("here are modifications")

难道您不希望像foo object modified这样的东西,并且该方法不会返回任何内容吗?

您可以始终执行m=[…]+[…]

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

extend就地修改列表。当一个可变对象被就地修改时,函数的返回值为None。不是新对象。因为这是
extend
返回的内容。@Alcott:我添加了一个示例,其中不包括列表