Инициализация 2D списков в Python: Как сделать глубокие копии каждой строки?

Допустим, я хочу инициализировать список 2D Python со всеми 0, я бы сделал что-то вроде:

test = [[0.0] * 10] * 10

Затем я начинаю изменять значения в первом списке ...

test[0][0] = 1.0

Но это влияет на первый пункт ВСЕХ списков по некоторым причинам:

print test

[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]

Что с этим происходит? Почему он делает глубокую копию внутреннего списка, но неглубокую копию внешнего списка?

Ответы на вопрос(2)

Ваш ответ на вопрос