Skip to content Skip to sidebar Skip to footer

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?"