在pythonshell中试试这个:list.extend/append
这就是我刚才在python shell中所做的:在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(
>>>[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:我添加了一个示例,其中不包括列表