Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 23, 2023 10:43:19

Riki_tiki_tavi
Зарегистрирован: 2023-08-23
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи со списками

Доброго времени суток, вопрос такой, почему при append одного списка в другой, первый ссылается на второй. То есть в коде ниже, мне нужно добавить список mylist2 в список mylist и затем очистить список mylist2, чтобы добавить в него уже другие элементы и опять добавить этот новый список в список mylist и тд, а получается, что список mylist ссылается на список mylist2, не понимаю, как это работает (((

s = input().split()
n = int(input())

def chunked(s, n):
mylist =
mylist2 =
count = n
for i in range(len(s)):
if count != 0:
mylist2.append(s)
count -= 1
if count == 0:
mylist.append(mylist2)
mylist2.clear()
count = n
return mylist


print(chunked(s, n))

Офлайн

#2 Авг. 23, 2023 11:50:44

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9865
Репутация: +  853  -
Профиль   Отправить e-mail  

Прошу помощи со списками

Список - это набор указателей на объекты. Если объект меняется, то указатель продолжает указывать на него же. Поэтому объект при добавлении нужно полностью копировать и добавлять эту копию. Тогда в списке будет указатель не на сам список, а на созданную его отдельную копию.

  
>>> lst1 = [1, 2, 3]
>>> 
>>> lst2 = []
>>> 
>>> lst2.append(lst1[:])
>>> 
>>> lst2
[[1, 2, 3]]
>>> 
>>> lst1.append(4)
>>> 
>>> lst2.append(lst1[:])
>>> 
>>> lst2
[[1, 2, 3], [1, 2, 3, 4]]
>>>



Офлайн

#3 Авг. 23, 2023 15:39:57

Riki_tiki_tavi
Зарегистрирован: 2023-08-23
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи со списками

py.user.next
Список - это набор указателей на объекты. Если объект меняется, то указатель продолжает указывать на него же. Поэтому объект при добавлении нужно полностью копировать и добавлять эту копию. Тогда в списке будет указатель не на сам список, а на созданную его отдельную копию.

Спасибо вам за помощь, теперь разобрался

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version