, На мой взгляд, реализация Python приняла решение, которое позволяет избежать бесконечных циклов, но может давать неправильные результаты для объектов без округлостей, но с общими компонентами. Я бы предпочел увидеть цикл моей программы навсегда и исправить его, чем искать скрытую ошибку!
аюсь инициализировать список списков, представляющих массив 3x3:
import copy
m = copy.deepcopy(3*[3*[0]])
print(m)
m[1][2] = 100
print(m)
и вывод:
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 0, 100], [0, 0, 100], [0, 0, 100]]
это не то, что я ожидал, так как последние элементы каждой строки являются общими! Я получил нужный мне результат с помощью:
m = [ copy.deepcopy(3*[0]) for i in range(3) ]
но я не понимаю, почему первая (и более простая) форма не работает. неdeepcopy
должен быть глубоким?