python - 基本列表操作

标签 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() 会改变.由于列表是可变的(即允许在同一内存地址进行更改),为什么会出现这种行为?

最佳答案

list.append() 返回 None,而不是列表。

您正在获取该对象的 id() 结果,而 None 是一个单例。对于给定的 Python 解释器运行,它总是是相同的:

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

关于python - 基本列表操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39621475/

相关文章:

python - 合并多个 CNN

python - 最大限度地分散所有护士的调度

python - Django 测试 : Using a login decorator for test cases

python - 苹果推送通知脚本突然不工作

python - wxpython 从 ID 访问对象

python - 将其他文件中的函数添加到 Python 类中

python - 尝试理解 Python Unicode 异常

python - 导入错误 : cannot import name pyqtSignal?

python - 在 Google AppEngine 上使用 urllib2 时出现服务器错误

python - 在列表理解中迭代列表的一部分