错误 - 迭代列表清单

时间:2018-05-02 09:07:57

标签: python list iteration

为什么会这样?两种方法应该给出相同的结果,但它们不会:

a_good=[[0,0],[0,0]]
for i in [0,1]:
    for j in [0,1]:
        a_good[i][j]=str(i)+str(j) #[['00','01'],['10','11']]

a_error=[[0]*2]*2
for i in [0,1]:
    for j in [0,1]:
        a_error[i][j]=str(i)+str(j) #[['10','11'],['10','11']]  !?

1 个答案:

答案 0 :(得分:1)

在第二个中,a_error [0]和a_error [1]是对同一列表的引用。因此,当您更新存储在a_error [0]中的值时,您正在更新存储在a_error中的值[1]

a_error=[[0]*2]*2
for i in [0,1]:
    print(a_error)
    for j in [0,1]:
        a_error[i][j]=str(i)+str(j) #[['10','11'],['10','11']]

print(a_error)


# [[0, 0], [0, 0]]
# [['00', '01'], ['00', '01']] # before i=1
# [['10', '11'], ['10', '11']] # after i=1