Python: Удаление Дубликатов из Списка (7 Способов)

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

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

Оглавление

Удаление дубликатов из списка Python с использованием циклов for

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

Давайте посмотрим, как это выглядит в Python:

# Удаление дубликатов из списка Python с использованием цикла for

duplicated_list = [1, 1, 2, 1, 3, 4, 1, 2, 3, 4]
deduplicated_list = list()

for item in duplicated_list:
    if item not in deduplicated_list:
        deduplicated_list.append(item)

print(deduplicated_list)

Давайте разберем, что мы сделали:

  • Мы создали новый пустой список для хранения уникальных элементов

  • Мы прошли по каждому элементу в нашем исходном списке и проверили, существует ли он в новом списке

  • Если его нет, мы добавили элемент в наш список. Если он существует, то мы ничего не делали

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

Удаление дубликатов из списка Python с использованием включения списка

Аналогично методу с использованием циклов for, вы также можете использовать включения списка Python для удаления дубликатов из списка. Процесс здесь немного отличается от обычного включения списка, так как мы будем использовать включение больше для прохода по списку.

Давайте посмотрим, как это выглядит:

# Удаление дубликатов из списка Python с использованием включения списка

duplicated_list = [1, 1, 2, 1, 3, 4, 1, 2, 3, 4]
deduplicated_list = list()

[deduplicated_list.append(item) for item in duplicated_list if item not in deduplicated_list]

print(deduplicated_list)

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

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

Хотите узнать больше о включениях списка Python? Ознакомьтесь с этим подробным учебником, который охватывает все, что вам нужно знать, с практическими примерами. Больше визуального обучения, посмотрите мой видеоурок на YouTube здесь.

Использование словарей Python для удаления дубликатов из списка

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

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

Давайте посмотрим, как мы можем использовать словари Python для удаления дубликатов из списка:

# Удаление дубликатов из списка Python с использованием словаря

duplicated_list = [1, 1, 2, 1, 3, 4, 1, 2, 3, 4]

dictionary = dict.fromkeys(duplicated_list)
deduplicated_list = list(dictionary)

print(deduplicated_list)

# Возвращает: [1, 2, 3, 4]

Давайте разберем, что мы сделали:

  • Мы создали словарь с помощью метода .fromkeys(), который использует переданные ему элементы для создания словаря с ключами из объекта

  • Затем мы преобразовали словарь в список с помощью функции list(), которая создает список из ключей в словаре

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

Нужно проверить, существует ли ключ в словаре Python? Ознакомьтесь с этим учебником, который учит пяти различным способам проверки существования ключа в словаре Python, включая возврат значения по умолчанию.

Использование множеств Python для удаления дубликатов из списка

Множества — это уникальные структуры данных Python, которые создаются с помощью фигурных скобок {}. Они содержат только уникальные элементы и являются неупорядоченными и неиндексированными.

Поскольку множества Python уникальны, когда мы создаем множество на основе другого объекта, такого как список, дублирующиеся элементы удаляются.

Что мы можем сделать, так это сначала преобразовать наш список в множество, а затем обратно в список.

Давайте посмотрим, как это выглядит в Python:

# Удаление дубликатов из списка Python с использованием множества

duplicated_list = [1, 1, 2, 1, 3, 4, 1, 2, 3, 4]
deduplicated_list = list(set(duplicated_list))

print(deduplicated_list)

# Возвращает: [1, 2, 3, 4]

Что мы сделали:

  • Мы передали наш исходный список в функцию set(), которая создала множество и удалила все дублирующиеся элементы

  • Затем мы передали это множество в функцию list(), чтобы создать новый список

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

Хотите узнать, как использовать функцию zip() Python для итерации по двум спискам? Этот учебник объясняет, что делает функция zip(), и показывает несколько креативных способов использования функции.

Удаление дубликатов из списка Python с использованием collections

Если вы работаете с более старой версией Python, которая не поддерживает упорядоченные словари (до Python 3.6), вы также можете использовать библиотеку collections для достижения очень похожего результата.

Мы используем библиотеку collections для создания упорядоченного словаря, а затем преобразуем его обратно в список.

Давайте посмотрим, как это работает:

# Удаление дубликатов из списка Python с использованием collections
from collections import OrderedDict

duplicated_list = [1, 1, 2, 1, 3, 4, 1, 2, 3, 4]
deduplicated_list = list(OrderedDict.fromkeys(duplicated_list))

print(deduplicated_list)

# Возвращает: [1, 2, 3, 4]

В следующем разделе вы узнаете, как использовать numpy для удаления дубликатов из списка.

Использование numpy для удаления дубликатов из списка Python

Популярная библиотека numpy имеет объект, похожий на список, называемый массивами. То, что великолепно в этих массивах, так это то, что у них есть множество полезных методов.

Один из этих методов — это функция unique(), которая находит уникальные элементы в массиве.

Давайте посмотрим, как мы можем использовать numpy для удаления дубликатов из списка Python:

# Удаление дубликатов из списка Python с использованием массива numpy
import numpy as np

duplicated_list = [1, 1, 2, 1, 3, 4, 1, 2, 3, 4]
deduplicated_list = np.unique(np.array(duplicated_list)).tolist()

print(deduplicated_list)

# Возвращает: [1, 2, 3, 4]

Здесь мы сначала создаем массив из нашего списка, передаем его в функцию unique(), а затем используем метод .tolist(), чтобы создать список из массива.

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

Использование pandas для удаления дубликатов из списка Python

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

Pandas использует массив numpy и создает объект Pandas Series. Эти объекты также похожи на списки Python, но расширены множеством функций и методов, которые можно к ним применить.

Давайте посмотрим, как это можно сделать в Python и Pandas:

# Удаление дубликатов из списка Python с использованием Pandas
import pandas as pd

duplicated_list = [1, 1, 2, 1, 3, 4, 1, 2, 3, 4]
deduplicated_list = pd.Series(duplicated_list).unique().tolist()

print(deduplicated_list)

# Возвращает: [1, 2, 3, 4]

Здесь мы сначала создали объект pd.Series(), затем применили метод .unique(), и, наконец, использовали метод .tolist(), чтобы вернуть список.

Нужно автоматизировать переименование файлов? Ознакомьтесь с этим подробным руководством по использованию pathlib для переименования файлов. Больше визуального обучения, весь урок также доступен в видео в статье!

Заключение

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

Чтобы узнать больше о библиотеке collections, ознакомьтесь с официальной документацией здесь..

Last updated