Python как удалить дубликаты

Как сделать — Удалить дубликаты Python из списка

Сначала у нас есть список, который содержит дубликаты:

Список с дубликатами

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

Создать словарь

Затем преобразуйте словарь обратно в список:

Преобразовать в список

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

Распечатайте список, чтобы продемонстрировать результат

Распечатать список

Создание функции

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

Пример

def my_function(x):
return list(dict.fromkeys(x))

mylist = my_function([«a», «b», «a», «c», «c»])

Объяснение примера

Создайте функцию, которая принимает список в качестве аргумента.

Создать функцию

def my_function(x):
return list(dict.fromkeys(x))

mylist = my_function([«a», «b», «a», «c», «c»])

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

Создать словарь

def my_function(x):
return list( dict.fromkeys(x) )

mylist = my_function([«a», «b», «a», «c», «c»])

Преобразовать словарь в список.

Преобразовать в список

def my_function(x):
return list( dict.fromkeys(x) )

mylist = my_function([«a», «b», «a», «c», «c»])

Возврат списка

def my_function(x):
return list(dict.fromkeys(x))

mylist = my_function([«a», «b», «a», «c», «c»])

Вызовите функцию со списком в качестве параметра:

Вызов функции

def my_function(x):
return list(dict.fromkeys(x))

mylist = my_function([«a», «b», «a», «c», «c»])

Вывод результата

def my_function(x):
return list(dict.fromkeys(x))

mylist = my_function([«a», «b», «a», «c», «c»])

print(mylist)

Мы только что запустили
SchoolsW3 видео

ВЫБОР ЦВЕТА

colorpicker

Сообщить об ошибке

Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:

Ваше предложение:

Спасибо Вам за то, что помогаете!

Ваше сообщение было отправлено в SchoolsW3.

ТОП Учебники
ТОП Справочники
ТОП Примеры
Получить сертификат

SchoolsW3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.

Читайте также:  Градиентный бустинг на питоне

Источник

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

Есть много способов удалить дубликаты из списка Python:

  • использование временного списка и цикла;
  • использование встроенного метода set();
  • использование ключей словаря;
  • функция List count();
  • понимание списка.

Список в Python может содержать повторяющиеся элементы. Давайте рассмотрим примеры удаления повторяющихся элементов разными способами.

1. Использование временного списка

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

ints_list = [1, 2, 3, 4, 3, 2] temp = [] for x in ints_list: if x not in temp: temp.append(x) ints_list = temp print(f'Updated List after removing duplicates = ')

Результат: обновленный список после удаления дубликатов = [1, 2, 3, 4].

2. Функция set()

В наборе Python нет повторяющихся элементов. Мы можем использовать встроенную функцию set() для преобразования списка в набор, а затем использовать функцию list(), чтобы преобразовать его обратно в список.

ints_list = [1, 2, 3, 4, 3, 2] ints_list1 = list(set(ints_list)) print(ints_list1) # [1, 2, 3, 4]

3. Перечисление элементов как ключей словаря

Мы знаем, что ключи словаря уникальны. Класс dict имеет функцию fromkeys(), которая принимает итерацию для создания словаря с ключами из итерируемого.

ints_list = [1, 2, 3, 4, 3, 2] ints_list2 = list(dict.fromkeys(ints_list)) print(ints_list2) # [1, 2, 3, 4]

4. Когда функция List count() – не рекомендуется

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

ints_list = [1, 2, 3, 4, 3, 2] for x in ints_list: if ints_list.count(x) > 1: ints_list.remove(x) print(ints_list) # [1, 2, 3, 4]

ПРИМЕЧАНИЕ. Как указано в комментарии ниже, использование функции count() не рекомендуется при удалении элемента из того же итератора, поскольку это может привести к нежелательным результатам.

values = [87, 94, 45, 94, 94, 41, 65, 94, 41, 99, 94, 94, 94] for x in values: if values.count(x) > 1: values.remove(x) print(values) # [87, 45, 65, 41, 99, 94, 94] - 94 is still present twice

5. Понимание списка

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

int_list = [1, 2, 3, 4, 3, 2] temp = [] [temp.append(x) for x in ints_list if x not in temp] print(temp) # [1, 2, 3, 4]

Лучший способ удалить дубликаты из списка

Если вам не нужны повторяющиеся элементы, вам следует использовать Set. Но если вам нужно удалить повторяющиеся значения из списка, я бы предпочел функцию count(), потому что она не создает другой временный набор или объект списка. Таким образом, он более эффективен с точки зрения памяти.

Читайте также:  Unable to launch application error java

Источник

Способы удаления дубликатов из списка в Python

Способы удаления дубликатов из списка в Python

Удаление дубликатов списка достаточно простая задача. При этом, знание ее вариантов имеет большое практическое значение. И в сегодняшней статье мы рассмотрим варианты получения уникального списка элементов из исходной последовательности. И рассмотрим варианты реализации.

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

# Код демонстрирует удаление дубликатов
# из списка наивным методом

# инициализация списка
my_list = [1, 3, 5, 6, 3, 5, 6, 1]
print («Оригинальный список : » + str(my_list))

# используем наивный метод
# чтобы убрать дубликаты
# из списка
li = []
for i in my_list:
if i not in li:
li.append(i)

# список после удаления дубликатов
print («список после удаления дубликатов : » + str(li))

Оригинальный список : [1, 3, 5, 6, 3, 5, 6, 1]
список после удаления дубликатов : [1, 3, 5, 6]

Использование генератора списков.

Данный метод аналогичен предыдущему, но использует запись в виде одной строки, с использованием генератора списков.

# Код демонстрирует удаление дубликатов
# из списка с помощью генератора списков

# инициализация списка
my_list = [1, 3, 5, 6, 3, 5, 6, 1]
print («Оригинальный список : » + str(my_list))

# используем генератор списка
# чтобы удалить дубликаты

li = []
[li.append(x) for x in my_list if x not in li]

# вывод списка после удаления элементов
print («Список после удаления дубликатов : » + str(li))

Оригинальный список : [1, 3, 5, 6, 3, 5, 6, 1]
список после удаления дубликатов : [1, 3, 5, 6]

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

# Код Python3 показывает как
# удалять дубликаты из списка методом set()

# инициализация списка
my_list = [1, 5, 3, 6, 3, 5, 6, 1]
print («Оригинальный список : » + str(my_list))

# используем set()
# чтобы удалить дубликаты из списка
my_list = list(set(my_list))

# вывод списка после удаления элементов
# не сохраняет порядок
print («Список после удаления дубликатов: » + str(my_list))

Оригинальный список : [1, 5, 3, 6, 3, 5, 6, 1]
Список после удаления дубликатов: [1, 3, 5, 6]

Генератор списка + enumarate().

Читайте также:  Включенный javascript в explorer

Генератор списка в сочетании с функцией перечисления также может решить эту задачу. Он ищет уже существующие элементы и пропускает их добавление. Также сохраняет порядок списка.

# Код Python3 показывает как удалять дубликаты из списка
# используя генератор списков(list comprehension) + enumerate()

# инициализация списка
my_list = [1, 5, 3, 6, 3, 5, 6, 1]
print («Оригинальный список : » + str(my_list))

# используем list comprehension + enumerate()
# чтобы удалить дубликаты из списка

li = [i for n, i in enumerate(my_list) if i not in my_list[:n]]

# вывод списка после удаления элементов
print («Список после удаления дубликатов: » + str(li))

Оригинальный список : [1, 5, 3, 6, 3, 5, 6, 1]
Список после удаления дубликатов: [1, 5, 3, 6]

Модуль collections.OrderedDict.fromkeys().

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

# Код Python3 показывает как удалять дубликаты из списка
# с помощью collections.OrderedDict.fromkeys()

from collections import OrderedDict

# инициализация списка
my_list = [1, 5, 3, 6, 3, 5, 6, 1]
print («Оригинальный список : » + str(my_list))

# используем модуль collections.OrderedDict.fromkeys()
# чтобы удалить дубликаты из списка

# вывод списка после удаления элементов
print («Список после удаления дубликатов: » + str(li))

Оригинальный список : [1, 5, 3, 6, 3, 5, 6, 1]
Список после удаления дубликатов: [1, 5, 3, 6]

Таким образом, для получения списка из уникальных элементов в Python, применимы все вышеуказанные методы. Но при этом встроенный модуль collections минимизирует скорость выполнения задачи.

Создано 21.09.2021 10:33:00

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.

    Источник

    Оцените статью