我正在简化一个用例,但是给出一个二维数组,我想在每一列用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()会以某种方式影响这一点,但我不知道为什么。请解释一下为什么每次访问一个单元格都会覆盖整个列!
发布于 2020-05-05 12:05:44
我尝试了你的解决方案(减去第一行的额外方括号),我得到了你预期的结果。因此,您可能需要考虑如何构建输入数组。
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)

https://stackoverflow.com/questions/61603453
复制相似问题