Я писал программу, которая нуждается в 2d-массиве, и столкнулся со странной проблемой.
Сначала я написал:
board = [[]]*11
для создания одиннадцати массивов в массиве.
Затем мне нужно было одиннадцать пробелов в каждом массиве, поэтому я написал:
for i in range(11):
board[i].append(' ')
Я хотел заполнить третий массив, от 4 до 7, звездами, поэтому я написал:
for i in range(4, 7):
board[2][i] = '*'
Но неожиданно вместо того, чтобы код воздействовал только на третий массив, все массивы в «плате» были изменены.
Итак, конечно, я написал:
board2 = []
for i in range(11):
board2.append([])
, чтобы создать мой массив, а затем написал:
for i in range(11):
for i in range(11):
board2[i].append(' ')
, чтобы создать мой массив из 11 массивов, содержащих 11 пробелов.
После того, как я создал свой массив, ясмог запустить код для добавления звезд, и, как и ожидалось, затронул только один массив вместо всех.
Не могли бы кто-нибудь объяснить, в чем разница между двумя, казалось бы, похожими массивами?