@tonik76

Как корректно добавить данные в вложенный список в список?

При добавлении элемента в список с вложенным списком предыдущие элементы становятся равными последнему внесенному.
текст:

i=0
a=[[3,5]]
a1=[]
while i<5:
    z=i+4
    x=i+7
    s=[z,x]
    a.append(s)
    a1.append(a)
    i=i+1
print(a)
print (a1)


на выходе:
[[3, 5], [4, 7], [5, 8], [6, 9], [7, 10], [8, 11]]

[[[3, 5], [4, 7], [5, 8], [6, 9], [7, 10], [8, 11]],
[[3, 5], [4, 7], [5, 8], [6, 9], [7, 10], [8, 11]],
[[3, 5], [4, 7], [5, 8], [6, 9], [7, 10], [8, 11]],
[[3, 5], [4, 7], [5, 8], [6, 9], [7, 10], [8, 11]],
[[3, 5], [4, 7], [5, 8], [6, 9], [7, 10], [8, 11]]]
  • Вопрос задан
  • 103 просмотра
Решения вопроса 2
Maksim_64
@Maksim_64
Data Analyst
a1.append(a.copy())
И увидите как вы ожидаете, а происходит так потому что вы добавляете ссылку на лист, а нужно добавлять копию, объекта.
Ответ написан
Комментировать
@igor6130
from copy import deepcopy


i = 0
a = [[3,5]]
a1 = []
while i < 5:
    z = i + 4
    x = i + 7
    s = [z, x]
    a.append(s)
    temp_a = deepcopy(a)
    a1.append(temp_a)
    i = i + 1
print(a)
print(a1)


Читайте документацию и статьи по спискам в питоне. Как их правильно копировать, что такое указатели.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@tonik76 Автор вопроса
Когда я s вкладывал в а все работало, тоже список в список.
Только учусь, буду разбираться.
Ответ написан
Ваш ответ на вопрос

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

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