Присвойте значение отдельной ячейке в двумерном массиве Python [дубликат]

На этот вопрос уже есть ответ здесь:

Допустим, у меня есть следующие пустые два размерный массив в 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 , где я думал только первый элемент из первый массив получит обновление. У меня два вопроса:

  1. Почему Python инициализирует первое значение каждого массива, а не только первое?
  2. Есть ли лучший способ выполнить то, что я пытаюсь сделать?
30
задан Ben McCormack 27 February 2012 в 02:26
поделиться