在Python 2.7.11中,我以这种方式创建了一个二维列表:
array1 = [[0]*2]*2
array2 = [[0 for i in range(2)] for j in range(2)]
他们都给了我[[0,0], [0,0]]
,但是当涉及到修改时,他们会得到不同的答案:
array1[0][0] = 1
array2[0][0] = 1
现在array1 = [[1,0], [1,0]]
,array2 = [[1,0], [0,0]]
。显然,array2是我的预期,但任何想法为什么array1表现不同?我假设array1正在复制第一行以创建矩阵,因此对其中一行的任何修改也会影响其他行。但是我一直使用[None] * size来初始化一维列表,它一直很好。