Как убрать из списка дубликат элемента?
1️⃣ Как кратко ответить
Для удаления дубликатов из списка в Python можно использовать преобразование списка во множество и обратно в список: list(set(my_list)). Это удалит все дубликаты, но не сохранит порядок элементов. Для сохранения порядка можно использовать цикл или библиотеку collections.OrderedDict.
2️⃣ Подробное объяснение темы
Преобразование в множество
Множество (set) в Python — это структура данных, которая автоматически удаляет дубликаты, так как в нем могут храниться только уникальные элементы. Преобразование списка в множество и обратно в список — это самый простой способ удалить дубликаты:
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set(my_list))
my_list— исходный список с дубликатами.set(my_list)— преобразует список в множество, удаляя дубликаты.list(set(my_list))— преобразует множество обратно в список.
Этот метод не сохраняет порядок элементов, так как множества неупорядочены.
Сохранение порядка
Если важно сохранить порядок элементов, можно использовать цикл для добавления элементов в новый список только в том случае, если они еще не были добавлены:
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = []
for item in my_list:
if item not in unique_list:
unique_list.append(item)
unique_list = []— создаем новый пустой список для хранения уникальных элементов.for item in my_list:— проходим по каждому элементу в исходном списке.if item not in unique_list:— проверяем, есть ли элемент уже вunique_list.unique_list.append(item)— добавляем элемент вunique_list, если его там еще нет.
Использование collections.OrderedDict
До Python 3.7 для сохранения порядка можно было использовать OrderedDict из модуля collections, который сохраняет порядок добавления элементов:
from collections import OrderedDict
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(OrderedDict.fromkeys(my_list))
OrderedDict.fromkeys(my_list)— создаетOrderedDict, где ключи — это элементы списка, что автоматически удаляет дубликаты и сохраняет порядок.list(OrderedDict.fromkeys(my_list))— преобразуетOrderedDictобратно в список.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться