Списки удаляются в Python
Я использую Python 3.6 У меня есть список:
listA = [1,2,3,1,2,4]
Я пытаюсь удалить повторяющиеся элементы из списка, поэтому окончательный список будет
listA = [3,4]
После того, как я зациклился один раз и удалил из списка 1 с помощью pop, мой цикл автоматически переместился на 3 вместо 2. Чтобы избежать этого, я использовал следующую логику:
ListB= ListA
ListA.clear()
ListA = ListB
но как только я очищаю ListA, другой список ListB также очищается автоматически. Как я могу избежать этого или решить эту проблему?
2 ответа
Объекты в Python хранятся по ссылке, что означает, что вы не присвоили значение ListA
в ListB
, но указатель на объект. Вы можете использовать is
оператор для проверки, если два объекта имеют одинаковый адрес в памяти.
Последовательности могут быть скопированы путем нарезки, чтобы вы могли использовать это для копирования списка:
b = a[:]
Также вы можете использовать
b = list(a)
Или вы можете использовать copy()
модуль:
from copy import copy
b = copy(a)
Смотрите подробности из Как скопировать объект в Python?
Имена списков в Python на самом деле просто ссылки, поэтому ваш новый список является ссылкой на тот же список. Чтобы фактически сделать новый список, вы можете использовать
ListB = list(ListA)