MiddleКодИногдаЕщё не отвечали
Что выведет [[0]*3]*3 после записи?
Предскажите сетку после присваивания.
grid = [[0] * 3] * 3
grid[0][0] = 1
print(grid)
Определите вывод и объясните.
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]. Внешнее * 3 копирует ссылку на один и тот же внутренний список трижды, поэтому изменение одной строки меняет все. Решение — включение, строящее независимые строки: grid = [[0] * 3 for _ in range(3)].
- ✗Считать, что
* 3делает глубокую копию внутреннего списка - ✗Путать умножение списка с трансляцией NumPy
- ✗Не знать решение через включение для независимых строк
- →Почему
[[0] * 3 for _ in range(3)]строит независимые строки? - →Применима ли та же ловушка алиасинга к
[0] * 3из неизменяемых int?