В Python иногда требуется получить уникальные значения из списка, удалив все повторяющиеся элементы. В этой статье мы рассмотрим различные методы получения уникальных значений из списка.
Множество в Python — это неупорядоченная коллекция уникальных элементов. Преобразование списка в множество — это один из наиболее простых и эффективных способов удалить дубликаты из списка.
# Исходный список
list_with_duplicates = [1, 2, 2, 3, 4, 4, 4, 5, 6, 6, 7]
# Преобразование списка в set
unique_values = set(list_with_duplicates)
print(unique_values)
#{1, 2, 3, 4, 5, 6, 7}
Обратите внимание, что множество не сохраняет порядок элементов. Если порядок важен, вы можете преобразовать множество обратно в список после удаления дубликатов.
# Исходный список
list_with_duplicates = [1, 2, 2, 3, 4, 4, 4, 5, 6, 6, 7]
# Преобразование списка в set
unique_values = set(list_with_duplicates)
# Преобразование set обратно в список
unique_values_list = list(unique_values)
print(unique_values_list)
#[1, 2, 3, 4, 5, 6, 7]
Если вам нужно сохранить исходный порядок элементов, вы можете использовать генератор списка с условием if not in
.
# Исходный список
list_with_duplicates = [1, 2, 2, 3, 4, 4, 4, 5, 6, 6, 7]
# Получение уникальных значений, сохраняя порядок
unique_values = []
[unique_values.append(i) for i in list_with_duplicates if i not in unique_values]
print(unique_values)
#[1, 2, 3, 4, 5, 6, 7]
В этом методе мы итерируемся по каждому элементу в исходном списке и добавляем его в новый список, если он еще не присутствует.
Модуль collections
в Python содержит класс OrderedDict
, который сохраняет порядок вставки элементов. Это может быть использовано для получения уникальных значений списка, сохраняя их исходный порядок.
from collections import OrderedDict
# Исходный список
list_with_duplicates = [1, 2, 2, 3, 4, 4, 4, 5, 6, 6, 7]
# Получение уникальных значений с помощью OrderedDict
unique_values = list(OrderedDict.fromkeys(list_with_duplicates))
print(unique_values)
#[1, 2, 3, 4, 5, 6, 7]
Аналогично OrderedDict
, функция dict.fromkeys()
может использоваться для получения уникальных значений списка. С Python 3.7, обычные словари сохраняют порядок вставки, так что этот метод также сохраняет порядок элементов.
# Исходный список
list_with_duplicates = [1, 2, 2, 3, 4, 4, 4, 5, 6, 6, 7]
# Получение уникальных значений с помощью dict.fromkeys()
unique_values = list(dict.fromkeys(list_with_duplicates))
print(unique_values)
#[1, 2, 3, 4, 5, 6, 7]
Этот метод похож на использование генератора списка, но вместо того чтобы добавлять элементы в существующий список, он создает новый список на месте.
# Исходный список
list_with_duplicates = [1, 2, 2, 3, 4, 4, 4, 5, 6, 6, 7]
# Получение уникальных значений с помощью list comprehension
unique_values = [i for n, i in enumerate(list_with_duplicates) if i not in list_with_duplicates[:n]]
print(unique_values)
#[1, 2, 3, 4, 5, 6, 7]
Этот метод итерирует по каждому элементу списка и проверяет, присутствует ли он уже в предыдущих элементах списка.
В Python есть несколько способов получения уникальных значений из списка. Метод выбора будет зависеть от ваших конкретных требований, таких как необходимость сохранения порядка элементов и требований к производительности. В любом случае, Python предлагает различные инструменты, чтобы сделать эту задачу быстрой и простой.
Содержание: