#python #python_3x
Есть работающий код задания двумерного массива: field=[] for i in range(8): block = [] for j in range(8): block.append('X') field.append(block) Выгялдит не очень, но он работает! Суть проблемы в том что при "не красивой" инициализации все списки отдельные объекты и когда мы делаем изменение в ячейке меняется только она. Как сократить, чтобы код был более "питонистичным", но и сохранить правильную изменяемость ячеек (функциональность)? Что-то вроде field = [['X']*8]*8 Но так при изменении поля, меняются все поля по координате из-за того что все ссылаеться на один список. Хочу чтобы при field[2][2] = 'O' изменялась только ячейка [2][2], а не весь столбец field[2][2] = 'O' ['X', 'X', 'O', 'X', 'X', 'X', 'X', 'X'] ['X', 'X', 'O', 'X', 'X', 'X', 'X', 'X'] ['X', 'X', 'O', 'X', 'X', 'X', 'X', 'X'] ['X', 'X', 'O', 'X', 'X', 'X', 'X', 'X'] ['X', 'X', 'O', 'X', 'X', 'X', 'X', 'X'] ['X', 'X', 'O', 'X', 'X', 'X', 'X', 'X'] ['X', 'X', 'O', 'X', 'X', 'X', 'X', 'X'] ['X', 'X', 'O', 'X', 'X', 'X', 'X', 'X'] Пытался использовать [:], list, но результата нет
Ответы
Ответ 1
L = [['X' for n in range(8)] for n in range(8)]
Комментариев нет:
Отправить комментарий