马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
>>> x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> x[1][1] = 0
>>> x
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
>>> array = [[0]*3]*3
>>> array
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> array[1][1] = 1
>>> array
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]
为什么 x[1][1] = 0 的结果是 [[1, 2, 3], [4, 0, 6], [7, 8, 9]]
而 array[1][1] = 1的结果是 [[0, 1, 0], [0, 1, 0], [0, 1, 0]]?
array = [[0]*3]*3 这种方式来赋值其实乘以3的是列表的地址,
而不会新建列表对象,所以里面的3个列表其实是指向同一个列表的,
所以其中一个发生改变另外两个也就跟着变了,
你可以把 array = [[0]*3]*3 改成 array = [[0]*3 for i in range(3)]
|