【发布时间】:2012-03-16 14:10:27
【问题描述】:
假设我在 Python 中有以下空二维数组:
q = [[None]*5]*4
我想将5 的值分配给q 的第一列中的第一行。本能地,我做了以下事情:
q[0][0] = 5
但是,这会产生:
[[5, None, None, None, None],
[5, None, None, None, None],
[5, None, None, None, None],
[5, None, None, None, None]]
每个数组的第一个元素被初始化为5,我认为只有第一个数组的第一个元素会得到更新。我有两个问题:
- 为什么 Python 会初始化每个数组的第一个值,而不仅仅是第一个?
- 有没有更好的方法来完成我想做的事情?
【问题讨论】:
-
同样的问题,完全忘了使用对象的引用