当我们使用如下方式创建一个二维列表时:
l = [[0]*3]*3
如果尝试给其中一个元素赋值
l[0][1] = 1
会发现整个列表的第二列都被赋值了
这种情况的原因是创建列表时第2,3行其实是第一行的一个浅拷贝,它们的地址是一样的,给任意一个赋值其余的也会被赋值,解决方法是使用如下方法建立二维列表
l = [[0]*3 for i in range(3)]
赋值结果:
l[0][1] = 1
当我们使用如下方式创建一个二维列表时:
l = [[0]*3]*3
如果尝试给其中一个元素赋值
l[0][1] = 1
会发现整个列表的第二列都被赋值了
这种情况的原因是创建列表时第2,3行其实是第一行的一个浅拷贝,它们的地址是一样的,给任意一个赋值其余的也会被赋值,解决方法是使用如下方法建立二维列表
l = [[0]*3 for i in range(3)]
赋值结果:
l[0][1] = 1