← Назад ко всем вопросам

Как убрать из списка дубликат элемента?

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 обратно в список.

Тема: Python
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки