Python: Удаление дубликатов из списка (7 способов)
Last updated
Last updated
В этом руководстве вы узнаете, как использовать Python для удаления дубликатов из списка. Умение работать со списками Python — важный навык для любого Pythonista. Возможность удалять дубликаты может быть очень полезной при работе с данными, где частота элементов не важна.
Вы научитесь удалять дубликаты из списка Python, сохраняя порядок или когда порядок не имеет значения. Вы узнаете, как делать это с помощью наивных методов, списковых выражений, множеств, словарей, библиотеки collections
, numpy
и pandas
.
Оглавление
Наиболее наивная реализация удаления дубликатов из списка в Python — это использование метода цикла for. Этот метод предполагает перебор каждого элемента в списке и проверку, существует ли он уже в другом списке.
Давайте посмотрим, как это выглядит
Давайте изучим, что мы здесь сделали
Мы создали новый, пустой список для хранения уникальных элементов
Мы перебрали каждый элемент в нашем дублированном списке и проверили, существует ли он в списке без дубликатов
Если элемент не существовал, мы добавляли его в наш список. Если он существовал, то мы ничего не делаем
В следующем разделе вы узнаете, как удалить дубликаты из списка в Python с помощью спискового включения.
Подобно методу с использованием циклов, вы также можете использовать списковые включения Python для удаления дубликатов из списка. Этот процесс немного отличается от обычного спискового включения, так как мы будем использовать его больше для перебора списка.
Давайте посмотрим, как это выглядит
Этот подход немного неудобен, так как генератор списков используется сам по себе. Это может сделать код менее интуитивно понятным, поскольку генераторы списков часто используются для создания новых списков. Однако, поскольку мы только перебираем список и добавляем элементы в другой список, новый список с помощью генератора не создается.
В следующем разделе вы узнаете, как использовать словари Python для удаления дубликатов
Начиная с Python 3.7, словари в Python сохраняют исходный порядок элементов. Хотя этот метод будет работать и в версиях до Python 3.7, результирующий список без дубликатов не будет сохранять порядок исходного списка.
Причина, по которой преобразование списка в словарь работает, заключается в том, что ключи словаря должны быть уникальными. Важно отметить, что ключи в словарях Python должны быть хешируемыми, то есть неизменяемыми. Если ваш список содержит изменяемые элементы, этот подход не будет работать.
Давайте рассмотрим, как можно использовать словари в Python для удаления дубликатов из списка.
Давайте посмотрим на то, что мы здесь
Мы создали словарь с помощью метода .fromkeys()
, который использует переданные в него элементы для создания словаря с ключами из объекта.
Мы затем преобразовали словарь в список, используя функцию list()
, которая создает список из ключей словаря.
В следующем разделе вы узнаете, как использовать множества Python для удаления дубликатов из списка.
Множества — это уникальные структуры данных в Python, которые создаются с помощью фигурных скобок {}
. Они содержат только уникальные элементы, упорядочены и неиндексированы.
Поскольку множества в Python уникальны, при создании множества на основе другого объекта, например, списка, дублирующиеся элементы.
Что мы можем сделать, так это сначала преобразовать наш список в множество, а затем обратно в список
Давайте посмотрим, как это выглядит
Что мы сделали здесь
Мы передали наш исходный список в функцию set()
, которая создала множество и удалила все повторяющиеся элементы
Затем мы передали этот набор в функцию list()
, чтобы создать другой список.
В следующем разделе вы узнаете, как использовать библиотеку collections
для удаления дубликатов из списка.
Если вы работаете со старой версией Python, которая не поддерживает упорядоченные словари (до Python 3.6), вы также можете использовать библиотеку коллекций для реализации очень похожего подхода.
Мы используем библиотеку collections
для создания упорядоченного словаря, а затем преобразуем его обратно в список.
Давайте посмотрим, как это работает:
В следующем разделе вы узнаете, как использовать numpy
для удаления дубликатов из списка.
Популярная библиотека Python numpy
имеет объект, похожий на список, называемый arrays
. Преимущество этих массивов в том, что у них есть множество полезных методов, встроенных в них.
Одна из этих функций - функция unique()
, которая находит уникальные элементы в массиве.
Давайте посмотрим, как можно использовать numpy
для удаления дубликатов.
Здесь мы сначала создаем массив
из нашего списка, передаем его в функцию unique()
. Наконец, используем метод .tolist()
, чтобы создать список из массива.
В последнем разделе вы узнаете, как использовать Pandas для удаления дубликатов из списка Python
В этом последнем разделе вы узнаете, как использовать популярную библиотеку pandas
для удаления дубликатов из списка.
Pandas использует массив numpy и создает объект серии Pandas. Эти объекты также похожи на списки Python, но расширены рядом функций и методов, которые могут быть к ним применены.
Давайте посмотрим, как мы можем сделать это на Python и с помощью Pandas.
В этом примере мы сначала создали объект pd.Series()
, затем применили метод .unique()
, и наконец использовали метод .tolist()
, чтобы вернуть список
В этом учебном пособии вы изучили различные способы удаления дубликатов из списка Python. Вы ознакомились с несколькими простыми методами, включая использование циклов for и списковых включений. Вы также узнали, как использовать множества и словари для удаления дубликатов, а также другие библиотеки, такие как collections
, numpy
и pandas
, для этой цели.
Нужно проверить, существует ли ключ в словаре Python? Ознакомьтесь с , которое обучает вас пяти различным способам проверки наличия ключа в словаре Python, включая возврат значения по умолчанию
Хотите узнать, как использовать функцию Python zip()
для итерации по двум спискам? вас точно тому, что делает функция zip()
, и покажет несколько креативных способов её использования.
Посмотрите другие на сайте datagy, включая наш и [всеобъемлющий обзор сводных таблиц в Pandas](https://datagy.io/python
Хотите узнать больше о вычислении квадратного корня в Python? , который научит вас различным способам вычисления квадратного корня, как без функций Python, так и с помощью
Чтобы узнать больше о библиотеке collections
, ознакомьтесь с .