Почему массив изменяется при изменении его составляющих?
[1] n = 3
[2] deck = [1,2,3]
[3] piles = [[],[4,5]]
[4] ndp = [(1,[1,2,3,4],[[],[4,5]])]
[5] if (n, deck, piles) not in ndp:
[6] k = (n,deck,piles)
[7] ndp.append(k)
[8] print(ndp)
>>> [(1, [1, 2, 3, 4], [[], [4, 5]]), (3, [1, 2, 3], [[], [4, 5]])]
[9] piles[1].append(deck.pop(0))
[10] print(ndp)
>>> [(1, [1, 2, 3, 4], [[], [4, 5]]), (3, [2, 3], [[], [4, 5, 1]])]
Почему массив ndp изменяется после изменения piles в строке [9] ?
Ответы (1 шт):
Автор решения: roddar92
→ Ссылка
Массив ndp изменился после извлечения первого элемента из deck. А ndp хранит в себе ссылку на deck.
Поэтому в массив стоит добавлять копии объектов (через copy.deepcopy(piles) и copy.deepcopy(deck)).