我正在简化用例,但考虑到2D数组,我想用每一列的i值覆盖第一列。但是,不是覆盖单个单元格,而是在每一步都覆盖整个列。
array = [[0,0,0], [0,0,0], [[0,0,0]]
for i in range(3):
array[i][0] = i+1
print(array)
预期输出:
[[1,0,0], [0,0,0], [[0,0,0]]
[[1,0,0], [2,0,0], [[0,0,0]]
[[1,0,0], [2,0,0], [[3,0,0]]
实际输出:
[[1,0,0], [1,0,0], [1,0,0]]
[[2,0,0], [2,0,0], [2,0,0]]
[[3,0,0], [3,0,0], [3,0,0]]
我怀疑调用range()会以某种方式实现此效果,但我不知道为什么。请帮助解释为什么每次访问单个单元格都会覆盖整列!
我尝试了您的解决方案(减去第一行中的多余方括号),然后得到了预期的结果。因此,您可能必须考虑如何构建输入数组。
input_array = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
for i in range(3):
input_array[i][0] = i + 1
print(input_array)
具有相同答案的另一个解决方案:
input_array = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
for (i, line) in enumerate(input_array):
line[0] = i + 1
print(input_array)
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmltZ3VyLmNvbS9NdnRsNHN3LnBuZyJ9” alt =“其他演示”>