Задать вопрос
@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]]?
  • Вопрос задан
  • 182 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
fenrir1121
@fenrir1121
Начни с документации
Вернуться к изучению основ, разобраться как работают изменяемые объекты, что такое передача по ссылке и по значению, формулировать какую вообще задачу вы решаете подобным кодом.

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

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

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
01 февр. 2025, в 23:26
100000 руб./за проект
01 февр. 2025, в 23:20
100000 руб./за проект
01 февр. 2025, в 22:03
3000 руб./за проект