Как удалить повторяющиеся элементы в списке в Python
Мы знаем, что список в Python может содержать значения любого типа данных. Это также означает, что список может содержать повторяющиеся элементы. А в некоторых скриптах мы можем не захотеть, чтобы в нашем списке были повторяющиеся элементы.
Синтаксис оператора membership:
x in collection x not in collection
Где, x – это элемент, in – ключевое слово в Python, а коллекция – это любая коллекция.
x в коллекции возвращает True, если x присутствует в коллекции, в противном случае – False.
x not in collection возвращает True, если x отсутствует в коллекции, в противном случае – False.
Ниже приведен пошаговый процесс удаления повторяющихся элементов из списка в Python с помощью оператора membership:
- Возьмите список предметов. Мы должны создать новый список с удаленными повторяющимися элементами из этого списка.
- Создайте новый пустой список.
- Для каждого элемента в данном исходном списке проверьте, присутствует ли элемент в новом списке:
- Если элемента нет в новом списке, добавьте элемент в новый список.
В этом примере мы возьмем список чисел, некоторые из которых являются дубликатами. Затем мы применим описанный выше пошаговый процесс, чтобы отбросить дубликаты и включить только уникальные элементы.
list1 = [2, 3, 7, 3, 6, 2, 8, 8]
list2 = []
for item in list1:
if item not in list2:
list2.append(item)
print(list2)
Вывод:
[2, 3, 7, 6, 8]
В приведенном выше примере мы скопировали уникальные элементы в новый список. Но что, если мы хотим удалить повторяющиеся элементы из исходного списка.
Выполните следующие действия, чтобы удалить повторяющиеся элементы из списка на месте:
- Возьмите список элементов. Мы собираемся удалить дубликаты, присутствующие в этом списке.
- Инициализируйте индекс с помощью 1. Поскольку первый элемент будет уникальным, мы проверяем его со второй позиции, а не с первой.
- Запустите цикл while с условием, что индекс должен быть меньше длины данного списка:
- Если элемент по индексу присутствует в подсписке, части списка, которая присутствует перед этой позицией индекса, удалите элемент по индексу. В противном случае увеличьте индекс и продолжите цикл while.
- После завершения цикла у нас остаются уникальные элементы в списке.
Чтобы найти подсписок, присутствующий перед индексом во время каждой итерации цикла while, мы используем технику Python Slicing.
list1 = [2, 3, 7, 3, 6, 2, 8, 8]
index = 1
while index < len(list1):
if list1[index] in list1[ : index]:
list1.pop(index)
else:
index += 1
print(list1)
Вывод:
[2, 3, 7, 6, 8]
Автор