正确范例如下
str2_list_len=5
str1_list_len=10
l=list()
Array=list()
for i in range(str1_list_len + 1):
l=list()
for i in range(str2_list_len + 1):
l.append([0, 0])
Array.append(l)
Array[0][0][0]=1;
print(Array)
[[[1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]]
错误范例1:
str2_list_len=5
str1_list_len=10
l=list()
Array=list()
for i in range(str2_list_len + 1):
l.append([0, 0])
for i in range(str1_list_len + 1):
Array.append(l.copy())
Array[0][0][0]=1;
print(Array)
[[1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]], [[1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]]
修改:
import copy
str2_list_len=5
str1_list_len=10
l=list()
Array=list()
for i in range(str2_list_len + 1):
l.append([0, 0]) #在这里【0,0】 就是新生成的。所以之间没有关系
for i in range(str1_list_len + 1):
Array.append(copy.deepcopy(l))
Array[0][0][0]=1;
print(Array)
#之前的 ".copy()"是浅复制,只能对第一维产生新的存储空间,不能为第二维产生新的存储空 间,所以改变一个全变。改为深复制后,可以对高维产生存储空间。不会发生一改全改。
错误范例2 :
str2_list_len=5
str1_list_len=10
l=list()
Array=list()
l=[[0,0]]*str2_list_len
Array=[l]*str1_list_len
Array[0][0][0]=1;
print(Array)
[[[1, 0], [1, 0], [1, 0], [1, 0], [1, 0]], [[1, 0], [1, 0], [1, 0], [1, 0], [1, 0]], [[1, 0], [1, 0], [1, 0], [1, 0], [1, 0]], [[1, 0], [1, 0], [1, 0], [1, 0], [1, 0]], [[1, 0], [1, 0], [1, 0], [1, 0], [1, 0]], [[1, 0], [1, 0], [1, 0], [1, 0], [1, 0]], [[1, 0], [1, 0], [1, 0], [1, 0], [1, 0]], [[1, 0], [1, 0], [1, 0], [1, 0], [1, 0]], [[1, 0], [1, 0], [1, 0], [1, 0], [1, 0]], [[1, 0], [1, 0], [1, 0], [1, 0], [1, 0]]]
#分析所有的【0,0】,都保存在一个地址上:只要改其中一个,所有【0,0】全都该。