a = [ [1,2,3],[4,5,6],[7,8,9] ]
b = [ [1]*3 ,[1]*3 ,[1]*3 ]
# b = [ [1]*3 ] * 3 这个相当于做了一个浅拷贝,[1]*3 的内存地址指向的是同一个,所以改动一个数的值,所有的值都会改变
print(a)
print(b)
print('-' * 10)
a[1][1] = 'a'
b[1][1] = 'a'
print(a)
print(b)
原因是浅拷贝,我们以这种方式创建的列表,b里面的三个列表的内存是指向同一块,不管我们修改哪个列表,其他两个列表也会跟着改变, 从而产生错误。你可以改成这么写[[1] * 3 for _ in range(3)]