Чего именно вы надеетесь достичь? Наблюдаемое поведение проистекает из того факта, что переменные объекта в python всегда являются ссылками. Поскольку вы не перезапускаете matrix
, а только очищаете его, его ссылка остается прежней. Таким образом, pop
содержит список копий той же ссылки. При построении population
вы используете deepcopy
, копируя тем самым фактическое содержимое объекта. Следовательно, population
содержит одну копию первой матрицы, затем две копии второй, затем три третьей и т. Д. c.
Вы также можете в скором времени использовать
pop = [ [ [ random.randint(1,4) for j in range(order) ] for i in range(order) ] for k in range(size) ]