@RUSTIK1023

Как «зафиксировать» список в питоне?

имеется следующий код:
MegaList=[]
List=[]
for i in range(3):
    List.append(i)
    MegaList.append(List)
print(MegaList)


То есть на первой итерации List равен [0]
на второй-[0,1]
на третьей-[0,1,2]
значит на первой итерации MegaList должен быть равен [[0]]
на второй-[[0],[0,1]]
на третьей-[[0],[0,1],[0,1,2]]
НО выведя MegaList через print получаем >>>[[0,1,2],[0,1,2],[0,1,2]]
если же выводить MegaList на каждой итерации, то получаем:
>>>[[0]]
>>>[[0,1],[0,1]]
>>>[[0,1,2],[0,1,2],[0,1,2]]
Как будто все значения MegaList навсегда становятся зависимы от List. Так вот, как же "зафиксировать" эти значения добавляемые в MegaList", что бы он был равен [[0],[0,1],[0,1,2]]?
  • Вопрос задан
  • 177 просмотров
Решения вопроса 1
fenrir1121
@fenrir1121
Начни с документации
Вернуться к изучению основ, разобраться как работают изменяемые объекты, что такое передача по ссылке и по значению, формулировать какую вообще задачу вы решаете подобным кодом.

Сейчас вы ссылаетесь на один и тот же объект 3 раза, вместо создания нового объекта.
Исправляется созданием плоской копии списка.
lst = []
l = []
for i in range(3):
    l.append(i)
    lst.append(l[:])
print(lst)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы