Python替换2D数组中的值

时间:2019-03-03 15:14:44

标签: python python-3.x

我想用从excel检索的特定值替换特定索引中的值。我正在将整个数组替换为检索到的最后一个值。

details= [[""] * 2 ] * 2
details_index=3
for count1 in range(len(details)-1):
    details[count1][0] = sheet.cell(row=count1+2, column=details_index).value

输出始终返回

[['0009', ''], ['0009', ''], ['0009', ''], ['0009', ''], ['0009', ''], ['0009', ''], ['0009', ''], ['0009', ''], ['0009', ''], ['0009', '']]

知道循环发生了什么错吗?

1 个答案:

答案 0 :(得分:0)

乘以数组时,您是在指数组的指针,而不是进行复制。

[[""]*2]*2正在制作[["",""]*["",""]]

但是实际上您的内存中只有[“”,“”]。因此,如果您更改其中之一,则全部更改。

也就是说,如果您使用array[0][0] = ["9","0"],则会在内存中存储该位置,并说["",""]现在是["9", "0"],因此array = [["9","0"],["9","0"]]

解决此问题的一种方法是使用Deepcopy,import deepcopy from copy可以使用

我想这就是你要问的。