【发布时间】:2011-06-15 10:13:51
【问题描述】:
可能重复:
Python list problem
我尝试在 python 中初始化一个矩阵。 首先我是这样做的:
>>> M=[[0]*4]*4
但这是我的问题,当我更改第一行时,每一行都在更改:
>>> M
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
>>> M[1][1]=1
>>> M
[[0, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0]]
所以我是这样做的:
>>> M= [ [ 0 for i in range(4) ] for j in range(4) ]
而且 ut 工作正常:
>>> M
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
>>> M[1][1]=1
>>> M
[[0, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
我的问题是:
这两个表达的真正含义是什么?以及为什么第一个这样做?
提前感谢您的帮助。
【问题讨论】: