Код: Выделить всё
>>> xs = [[1] * 4] * 3
>>> print(xs)
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
>>> xs[0][0] = 5
>>> print(xs)
[[5, 1, 1, 1], [5, 1, 1, 1], [5, 1, 1, 1]]
< /code>
Я ожидал, что это повлияет только на первого сублиста, а не на все из них. Это: < /p>
>>> print(xs)
[[5, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
< /code>
Почему каждый первый элемент каждого сублиста изменил 5 < /code>? < /p>
См. Также: < /p>
- Как мне клонировать список, чтобы он не изменился неожиданно после назначения? и Как инициализировать двумерный массив (список списков, если не использовать Numpy) в Python? Для обходных пути для проблемы
- Список словарных хранилищ только последнее добавленное значение в каждой итерации для аналогичной проблемы со списком DICTS
< /li>
Как инициализировать словарь пустых списков в Python? Для аналогичной проблемы с DICT списков
Подробнее здесь: https://stackoverflow.com/questions/240 ... expectedly
Мобильная версия