我想用从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', '']]
知道循环发生了什么错吗?
答案 0 :(得分:0)
乘以数组时,您是在指数组的指针,而不是进行复制。
[[""]*2]*2
正在制作[["",""]*["",""]]
但是实际上您的内存中只有[“”,“”]。因此,如果您更改其中之一,则全部更改。
也就是说,如果您使用array[0][0] = ["9","0"]
,则会在内存中存储该位置,并说["",""]
现在是["9", "0"]
,因此array = [["9","0"],["9","0"]]
。
解决此问题的一种方法是使用Deepcopy,import deepcopy from copy
可以使用
我想这就是你要问的。