首页 > 解决方案 > Python List插入独立的参考变量

问题描述

假设这a是一些参考变量,我想将它放入列表中三次:

a = [1,2,3]
b = [a]*3
>>> b
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

所以这仍然按预期工作。但是,如果我将一个元素附加到其中一个参考变量,它就会反映到所有这些变量中:

>>> b[0].append(4)
>>> b
[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]

发生这种情况是因为*第一个代码块中的运算符仅复制引用而列表仅指向a?我是否需要一个 for 循环才能获得独立参考变量(副本)n时间的列表?(在上面的示例中 n 为 3)

*在这种情况下,操作员的工作准确度如何?

使用 for 循环和append()-Method 的行为是相同的 - 这里是否也使用了引用?:

>>> a = [1,2,3]
>>> b = []
>>> for i in range(2):
...     b.append(a)
...
>>> b
[[1, 2, 3], [1, 2, 3]]
>>> b[0].append(4)
>>> b
[[1, 2, 3, 4], [1, 2, 3, 4]]

插入副本时,行为符合预期:

>>> a = [1,2,3]
>>> b = []
>>> for i in range(2):
...     b.append(a.copy())
...
>>> b
[[1, 2, 3], [1, 2, 3]]
>>> b[0].append(4)
>>> b
[[1, 2, 3, 4], [1, 2, 3]]

有没有比我上面做的循环.append()和更短、更方便的方法呢?.copy()

我的 Python 版本是 Python 3.8.6 请注意,我的问题不仅仅是使用deep_copy(),因为它是关于在列表中更频繁地插入元素和*- 运算符 - 我知道是什么deep_copy()

标签: pythonpython-3.xlist

解决方案


推荐阅读