Скажем, у меня есть следующий пустой двухмерный массив в 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 инициализирует первое значение каждого массива, а не только первое?
- Есть ли лучший способ выполнить то, что я пытаюсь сделать?