Please see the code below, why by doing
array[0][0] = 'Tadaaaa'
changed 5 elements instead of one?
First, create an empty array:
x, y = 5, 3
# when you multiply it's copying, so the ids of each item is the same
array = [[set()] * y] * x
array
I will get:
[[set(), set(), set()],
[set(), set(), set()],
[set(), set(), set()],
[set(), set(), set()],
[set(), set(), set()]]
Then assign a value to elements:
array[3][2].add('BBC')
array
I will get:
[[{'BBC'}, {'BBC'}, {'BBC'}],
[{'BBC'}, {'BBC'}, {'BBC'}],
[{'BBC'}, {'BBC'}, {'BBC'}],
[{'BBC'}, {'BBC'}, {'BBC'}],
[{'BBC'}, {'BBC'}, {'BBC'}]]
But when I do:
array[0][0] = 'Tadaaaa'
array
I get:
[['Tadaaaa', {'BBC'}, {'BBC'}],
['Tadaaaa', {'BBC'}, {'BBC'}],
['Tadaaaa', {'BBC'}, {'BBC'}],
['Tadaaaa', {'BBC'}, {'BBC'}],
['Tadaaaa', {'BBC'}, {'BBC'}]]
What's going on here?
I thought I would get something like this:
[['Tadaaaa', {'BBC'}, {'BBC'}],
[{'BBC'}, {'BBC'}, {'BBC'}],
[{'BBC'}, {'BBC'}, {'BBC'}],
[{'BBC'}, {'BBC'}, {'BBC'}],
[{'BBC'}, {'BBC'}, {'BBC'}]]