Ответ
Существует несколько способов удалить дубликаты из списка в 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+).