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