Скажем, у меня есть следующий пустой двухмерный массив в Python:
q = [[None]*5]*4
Я хочу присвоить значение 5
первой строке в первом столбце q
. Инстинктивно я делаю следующее:
q[0][0] = 5
Однако это дает:
[[5, None, None, None, None],
[5, None, None, None, None],
[5, None, None, None, None],
[5, None, None, None, None]]
Первый элемент каждого массива инициализируется на 5
, где я думал, что только первый элемент первого массива получит обновление. У меня есть два вопроса:
- Почему Python инициализирует первое значение каждого массива, а не только первое?
- Есть ли лучший способ выполнить то, что я пытаюсь сделать?