Python Array Strange Behavior?
Can anyone explain why is this happening? Case 1: >>> a = [[0]] *3 >>> print a [[0], [0], [0]] >>> a[1].append(0) >>> print a [[0, 0], [0, 0], [
Solution 1:
In the first case, the three elements in a
actually reference to the same list objects. You can check their id:
>>> id(a[0])
4524132472
>>> id(a[1])
4524132472
>>> id(a[2])
4524132472
Solution 2:
In the first case, you are creating a list [0]
and duplicate it 3 times. This is the same object repeated three times. You should use the star form only with immutable type
To avoid this issue when you have a mutable type, use list comprehension:
a = [[0] for _ in range(3)]
Post a Comment for "Python Array Strange Behavior?"