Получение уникальных значений списка в Python

Извлечение уникальных значений из списка в Python: основные способы

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

Метод 1: Использование преобразования в множество

Множество в 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]

Метод 2: Использование генератора списков и if not in

Если вам нужно сохранить исходный порядок элементов, вы можете использовать генератор списка с условием 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]

В этом методе мы итерируемся по каждому элементу в исходном списке и добавляем его в новый список, если он еще не присутствует.

Метод 3: Использование collections.OrderedDict

Модуль 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]

Метод 4: Использование функции dict.fromkeys()

Аналогично 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]

Метод 5: Использование list comprehension и if not in

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

# Исходный список
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 предлагает различные инструменты, чтобы сделать эту задачу быстрой и простой.

Содержание: