Let's the following code :
>>> t=[[0]*2]*3
>>> t
[[0, 0], [0, 0], [0, 0]]
>>> t[0][0]=1
>>> t
[[1, 0], [1, 0], [1, 0]]
Rather surprising, isn't it ? So I suppose all the subarrays reférence
the same array :
>>> id(t[0]), id(t[1]), id(t[2])
(3077445996L, 3077445996L, 3077445996L)
>>>
So what is the right way to initialize to 0 a 2D array ? Is that way
correct :
>>> t=[[0 for _ in range(2)] for _ in range(3)]
It seems there is no more trouble now :
>>> t
[[0, 0], [0, 0], [0, 0]]
>>> t[0][0]=1
>>> t
[[1, 0], [0, 0], [0, 0]]
>>>
Correct ?
--
http://mail.python.org/mailman/listinfo/python-list