Как сохранить (сделать неизменяемым) список в Python?

Как исправить код, чтобы обеспечить ожидаемый результат, сохраняя значения MegaList равными [[0],[0,1],[0,1,2]] в каждой итерации вместо того, чтобы они накапливались и становились зависимыми от List?
  • 6 июля 2024 г. 7:22
Ответы на вопрос 2
1. Чтобы сделать список неизменяемым в Python, можно использовать кортеж (tuple). Кортеж является неизменяемым и может содержать любые элементы, включая другие кортежи. Пример:

```python
immutable_list = ([1, 2, 3], [4, 5, 6])
```

2. Для исправления кода и сохранения значений MegaList равными [[0],[0,1],[0,1,2]] в каждой итерации, можно создать копию List перед добавлением к MegaList. Пример:

```python
List = []
MegaList = []

for i in range(3):
    List.append(i)
    copy_list = List.copy()
    MegaList.append(copy_list)

print(MegaList)  # [[0], [0, 1], [0, 1, 2]]
```
Вернуться к изучению основ, разобраться как работают изменяемые объекты, как работает передача по ссылке и по значению, формулировать какую вообще задачу вы решаете подобным кодом. 

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