python - 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()
!
解决方案
推荐阅读
- cryptocurrency - 如何在 TronLink 钱包中显示我的硬币/代币的价格
- reactjs - 即使在清除严重性漏洞后也无法创建 React 应用程序
- javascript - jQuery - 无法选择第三个子元素
- mysql - 如何使用另一个表 typeorm 查询不符合条件的 id
- python - python 正则表达式:寻找正确的模式与消极的后视
- javascript - 搜索栏无法在引导程序中使用 js 脚本
- amazon-web-services - CodePipeline:提供的角色没有执行此操作的权限
- android-studio - 如何允许用户只输入一次editText并在此之后禁用它?
- excel - 数字转换为字符串,而 xlsx 使用 vbs 转换为 csv
- html - 在 Google Chrome 上调整窗口大小时,按钮的右边框消失