Как в Python удалить дубликаты из списка

Ответ

Существует несколько способов удалить дубликаты из списка в Python, которые различаются по сохранению исходного порядка элементов и производительности.

1. С помощью set (порядок не сохраняется)

Это самый быстрый и идиоматичный способ, если порядок элементов не важен. Множества по своей природе хранят только уникальные значения.

Почему это работает: Преобразование списка в set автоматически отбрасывает все дубликаты. Затем set преобразуется обратно в list.

original_list = [1, 4, 2, 2, 5, 4, 3]
unique_list = list(set(original_list))

print(unique_list) # Вывод может быть [1, 2, 3, 4, 5] (порядок не гарантирован)

2. С помощью dict.fromkeys() (порядок сохраняется)

Начиная с Python 3.7, стандартные словари сохраняют порядок вставки ключей. Этот метод использует эту особенность для эффективного удаления дубликатов с сохранением порядка.

Почему это работает: dict.fromkeys() создает словарь, используя элементы списка в качестве ключей. Поскольку ключи в словаре уникальны, дубликаты игнорируются. Затем из ключей словаря создается новый список.

original_list = [1, 4, 2, 2, 5, 4, 3]
unique_list = list(dict.fromkeys(original_list))

print(unique_list) # Вывод: [1, 4, 2, 5, 3]

Итог:

  • Для максимальной производительности без сохранения порядка используйте set().
  • Для сохранения порядка элементов используйте dict.fromkeys() (для Python 3.7+).