Форум сайта python.su
Доброго времени суток, вопрос такой, почему при 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))
Офлайн
Список - это набор указателей на объекты. Если объект меняется, то указатель продолжает указывать на него же. Поэтому объект при добавлении нужно полностью копировать и добавлять эту копию. Тогда в списке будет указатель не на сам список, а на созданную его отдельную копию.
>>> 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]] >>>
Офлайн
py.user.next
Список - это набор указателей на объекты. Если объект меняется, то указатель продолжает указывать на него же. Поэтому объект при добавлении нужно полностью копировать и добавлять эту копию. Тогда в списке будет указатель не на сам список, а на созданную его отдельную копию.
Офлайн