python - 为什么插入方法会影响两个列表?
问题描述
我列出了一份清单,然后复制了一份。我试图在每个元素的元素中插入不同的值。
list1 = [
[0, 0, 0],
[0, 0, 1],
[0, 1, 0],
[0, 1, 1],
[1, 0, 0],
[1, 0, 1],
[1, 1, 0],
[1, 1, 1]
]
list2 = list1.copy()
for i in range(8):
list1[i].insert(0, 0)
list2[i].insert(0, 1)
但结果是两个列表都受到两个插入的影响。我知道它们是不同的对象,因为我使用id(list1)
and打印了它们的 ID id(list2)
,所以我不明白为什么会这样。任何帮助都会很有用。
先感谢您。
解决方案
使用deepcopy
.
from copy import deepcopy
list1 = [
[0, 0, 0],
[0, 0, 1],
[0, 1, 0],
[0, 1, 1],
[1, 0, 0],
[1, 0, 1],
[1, 1, 0],
[1, 1, 1]
]
list2 = deepcopy(list1)
for i in range(8):
list1[i].insert(0, 0)
list2[i].insert(0, 1)
输出
list1: [[0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0], [0, 0, 1, 1], [0, 1, 0, 0], [0, 1, 0, 1], [0, 1, 1, 0], [0, 1, 1, 1]]
list2: [[1, 0, 0, 0], [1, 0, 0, 1], [1, 0, 1, 0], [1, 0, 1, 1], [1, 1, 0, 0], [1, 1, 0, 1], [1, 1, 1, 0], [1, 1, 1, 1]]
推荐阅读
- node.js - 获取错误 cursor.map 不是函数
- queue - Celery CLI - 无法取消特定节点上特定工作者的消费者
- java - 如何以最佳方式按字符串对类列表进行排序
- php - 如何在foreach中处理foreach?
- javascript - 当我打开菜单移动时禁用滚动上的“隐藏/显示”
- iis-express - Blazor 模板 HTTP 错误 500.24 - 内部服务器错误:system.web/identity@impersonate 设置为 true
- postman - Postman - Need help to store a variable from the date value(YYYY-MM-DD) in response by changing the date format to MMM-DD-YYYY
- ios - 使用 SwiftUI 在 CanvasView 中绘图
- typescript - 做什么
或者 在打字稿中是什么意思? - javascript - 安装 Particle js 时遇到问题