Есть несколько способов получить уникальные элементы из списка в Python:
1. Преобразование в множество (set):
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set(my_list))
print(unique_list) # Вывод: [1, 2, 3, 4, 5]
Этот способ быстрый, но не сохраняет порядок элементов.
2. Использование цикла с проверкой наличия:
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)
print(unique_list) # Вывод: [1, 2, 3, 4, 5]
Этот способ сохраняет порядок, но может быть медленнее для больших списков.
3. Использование `dict.fromkeys()`:
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(dict.fromkeys(my_list))
print(unique_list) # Вывод: [1, 2, 3, 4, 5]
Сохраняет порядок, работает быстрее цикла.
Есть несколько способов получить уникальные элементы из списка в Python:
Это самый распространенный и, как правило, самый быстрый способ. Преобразование списка в `set` автоматически удаляет дубликаты, так как `set` по определению содержит только уникальные элементы. Затем `set` можно обратно преобразовать в список.
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set(my_list))
print(unique_list) # Output: [1, 2, 3, 4, 5] (порядок может отличаться)
Важно: Этот способ не сохраняет исходный порядок элементов.
Этот способ сохраняет порядок элементов в списке (начиная с Python 3.7, а в CPython реализации и более ранних версиях). Он использует тот факт, что ключи словаря должны быть уникальными.
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(dict.fromkeys(my_list))
print(unique_list) # Output: [1, 2, 3, 4, 5] (порядок сохраняется)
Этот способ более эффективен по памяти и скорости по сравнению с методом через цикл `for`, особенно для больших списков.
Этот способ менее эффективен, особенно для больших списков, но он полезен, если вам нужно больше контроля над процессом или если элементы списка не поддерживают хэширование (например, списки внутри списка).
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)
print(unique_list) # Output: [1, 2, 3, 4, 5] (порядок сохраняется)
До Python 3.7, если вам нужно было сохранить порядок и избежать проблем с хэшированием, можно было использовать `collections.OrderedDict`.
from collections import OrderedDict
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(OrderedDict.fromkeys(my_list))
print(unique_list) # Output: [1, 2, 3, 4, 5] (порядок сохраняется)