Списки удаляются в 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)
Другие вопросы по тегам