python - 将值分配给相同的列表,但得到不同的结果
问题描述
我创建了两个相同的零列表。然而,当列表分配给相同的值时,结果会有所不同。这是我的代码和结果。
代码:
m1 = [[0] * 4] * 4
m2 = [[0 for j in range(4)] for i in range(4)]
m1[0][1] = 1
m2[0][1] = 1
print('m1:', m1)
print('m2:', m2)
结果:
m1: [[0, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0]]
m2: [[0, 1, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
或者也许这两个列表不是“相同的”?任何帮助,将不胜感激。
解决方案
在m1
中,您引用了相同的[[0] * 4]
4 次。基本上你在做:
x = [0, 0, 0, 0]
m1 = [x, x, x, x]
x[1] = 1
导致 x 被[0 1 0 0]
重复 4 次m1
推荐阅读
- swift - 尝试搜索 Firestore 并重新加载 tableview 时出现 SearchBar 问题
- reactjs - 使用自定义 webpack 配置集成 webpack 和 wix-stylable
- android - 分页时出现越界异常
- javascript - 不同语言的特殊字符验证
- ruby-on-rails - Rails ActiveRecord,用户 ID 获取数据表列表
- perl - Mastodon::Listener: 1 at /home/sergio/perl5/lib/perl5/Role/EventEmitter.pm 第 21 行
- jquery - 在 ASP.NET MVC 中使用具有自动完成功能的处理程序
- delphi - MDI-Form 忽略 StyleElements seClient
- amazon-web-services - 在 Kubernetes 中从不同云提供商的现有集群中添加节点时出现问题?
- javascript - 在循环中附加对象