python 構建二位數組的兩種不同的方式,具有巨大區別
x=2 z=2
方式1:
Z = [[0]*z]*x
此時對Z的[0][0]元素進行賦值時
Z[0][0]=100
可以看到每個list的第一個元素都是100了;為什麼會這樣呢?因為*x,是對子list創建了多個引用,而不是在內存中開辟出新的值
方式2:
res = [[0] * z for _ in range(x)]
res[0][0]=100
這裡的for _ in range(x)代表的是,在內存中開辟多個塊,所以不會有引用的問題。