Ответ
Существует несколько способов удалить дубликаты из списка в 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+).
Ответ 18+ 🔞
Так, слушай, а вот есть у тебя список, а в нём одно и то же, как говна за баней, повторяется. Ну, дубликаты, блядь. И надо их убрать, чтобы чисто было. В Питоне, понятное дело, способов — овердохуища, но главное — порядок нужен или похуй?
Первый способ — через set (если порядок похуй, а скорость — огонь)
Вот смотри, если тебе всё равно, в каком порядке элементы будут валяться, то это твой вариант. Берёшь список, суёшь в set, а set, он такой хитрожопый, сам все повторы выкидывает. Потом обратно в список — и готово, чистота.
original_list = [1, 4, 2, 2, 5, 4, 3]
unique_list = list(set(original_list))
print(unique_list) # Может вывести [1, 2, 3, 4, 5] (порядок — как карта ляжет)
Второй способ — через dict.fromkeys() (если порядок священен и его надо сохранить)
А вот если тебе порядок важен, как последняя пачка сигарет в ларьке в три ночи, то тут уже сложнее. Но с Питоном 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()(для Питона 3.7+), и будет тебе счастье.