0

I am trying to initialize the 2D array with false values. Both instructions mentioned below are producing same results. Please help to know the difference between the two ?

Input

[[False] * 3] * 3 
[[False for i in range(3)] for j in range(3)]

Output

[[False, False, False], [False, False, False], [False, False, False]]
[[False, False, False], [False, False, False], [False, False, False]]
vinoth kumar
  • 216
  • 4
  • 15

1 Answers1

1

Let' try this:

>>> a = [[False] * 3] * 3
>>> b = [[False for i in range(3)] for j in range(3)]
>>> a
[[False, False, False], [False, False, False], [False, False, False]]
>>> b
[[False, False, False], [False, False, False], [False, False, False]]

Now let's change a single value (do we?):

>>> a[0][0] = True
>>> a
[[True, False, False], [True, False, False], [True, False, False]]

Note that a was changed in three positions.

>>> b[0][0] = True
>>> b
[[True, False, False], [False, False, False], [False, False, False]]

b was not. That's the difference.