基本列表操作

时间:2016-09-21 16:04:33

标签: python python-2.7

我在python交互式shell中尝试了一个非常基本的代码

>>> a=[1,2,3]
>>> id(a)
36194248L
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> id(a)
36194248L
>>>
>>> id([1,2,3])
36193288L
>>> id([1,2,3].append(4))
506033800L
>>> id([1,2,3].append(5))
506033800L
>>> id([1,2,3].append(6))
506033800L

问:当我为名为'a'的变量分配一个列表,并尝试追加更多值时,id()不会改变,但如果我尝试相同的事情而不分配给变量,则id()会改变。由于列表是可变的(即允许在相同的内存地址进行更改),为什么会出现这种行为?

2 个答案:

答案 0 :(得分:4)

list.append()会返回None,而非列表。

您获得该对象的id()结果,而None是单身。对于给定的Python解释器运行,总是是相同的:

>>> id(None)
4514447768
>>> [].append(1) is None
True
>>> id([].append(1))
4514447768

答案 1 :(得分:1)

由于list.append返回None,您正在调用id(None),其中只有一个实例。