Riki_tiki_tavi
Авг. 23, 2023 10:43:19
Доброго времени суток, вопрос такой, почему при 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))
py.user.next
Авг. 23, 2023 11:50:44
Список - это набор указателей на объекты. Если объект меняется, то указатель продолжает указывать на него же. Поэтому объект при добавлении нужно полностью копировать и добавлять эту копию. Тогда в списке будет указатель не на сам список, а на созданную его отдельную копию.
>>> 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]]
>>>
Riki_tiki_tavi
Авг. 23, 2023 15:39:57
py.user.next
Список - это набор указателей на объекты. Если объект меняется, то указатель продолжает указывать на него же. Поэтому объект при добавлении нужно полностью копировать и добавлять эту копию. Тогда в списке будет указатель не на сам список, а на созданную его отдельную копию.
Спасибо вам за помощь, теперь разобрался