Как удалить повторяющиеся элементы в списке python
Перейти к содержимому

Как удалить повторяющиеся элементы в списке python

  • автор:

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

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

>>> lst = [9, 5, 3, 1, 7, 6, 5, 3, 1, 4, 3, 2, 1] >>> list(set(lst)) # [1, 2, 3, 4, 5, 6, 7, 9] 

Из примера видно, что получены только уникальные значения исходного списка lst . Большой недостаток такого способа удаления дубликатов заключается в том, что итоговый список теряет порядок очередности значений, что следует из определения множества (множество — это неупорядоченная последовательность различных хешированных объектов).

Так как же удалить дубликаты в списке и при этом сохранить порядок элементов списка? В этом могут помочь следующие два свойства словаря Python dict :

  1. Ключи словаря не могут иметь дублирующие значения.
  2. Словари в Python сохраняют очерёдность (помнят порядок) вставки ключей.

Для создания словаря Python из последовательности (списка list ) воспользуемся генератором словаря:

>>> lst = [9, 5, 3, 1, 7, 6, 5, 3, 1, 4, 3, 2, 1] >>> d = key:0 for key in lst> >>> d # # теперь просто получим ключи словаря >>> list(d) # [9, 5, 3, 1, 7, 6, 4, 2] 

Из примера видно что полученный список (без дубликатов) сохранил очерёдность значений, как и ожидалось.

Еще проще использовать метод dict.fromkeys() , который создаёт словарь из последовательности ключей.

>>> lst = [9, 5, 3, 1, 7, 6, 5, 3, 1, 4, 3, 2, 1] >>> d = dict.fromkeys(lst) >>> d # # теперь просто получим ключи словаря >>> list(d) # [9, 5, 3, 1, 7, 6, 4, 2] 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Изменение/замена элемента списка по индексу
  • Изменение части списка операцией среза
  • Изменение списка срезом c заданным шагом
  • Удаление части списка операцией среза
  • Удаление части списка по срезу с заданным шагом
  • Метод list.append(), добавляет значение в конец списка
  • Метод list.clear(), очищает список
  • Метод list.copy(), копия списка
  • Метод list.extend(), расширяет список другой последовательностью
  • Расширение списка его содержимым
  • Метод list.insert(), вставить элемент по индексу
  • Метод list.pop(), получение с удалением элемент списка
  • Метод list.remove(), удаление элемента списка по значению
  • Метод list.reverse(), разворачивает элементы списка
  • Удаление элемента списка по индексу
  • Удаление дубликатов из списка Python с сохранением очередности

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

Для удаления дубликатов из списка можно использовать функцию set(), которая автоматически удаляет все повторяющиеся элементы. Но если необходимо сохранить порядок элементов, можно использовать следующий код:

def remove_duplicates(lst):
«»»Удаляет дубликаты из списка, сохраняя порядок элементов.»»»
seen = set()
result = []
for item in lst:
if item not in seen:
seen.add(item)
result.append(item)
return result

В этой функции мы создаем пустое множество seen для отслеживания уже пройденных элементов и пустой список result для сохранения уникальных элементов в том же порядке, в котором они были в исходном списке. Затем мы проходимся по каждому элементу списка lst. Если элемент еще не встречался, мы добавляем его в множество seen и в список result. Если же элемент уже был встречен, мы его игнорируем. Наконец, мы возвращаем список result как результат функции.

Переписать другими словами
Написать сочинение по запросу
Или попробуйте другие режимы нейросети.

Сберегите свое время и избавьтесь от лишних копий в списке благодаря нашей нейросети. Наша онлайн-система удалит все дубликаты в несколько секунд, а вы сможете потратить свое время на более важные задачи. Наша нейросеть пишет текст, и использует современные методы машинного обучения, чтобы справиться с задачей на 100%. Безопасность и удобство использования гарантированы. Попробуйте уже сегодня и убедитесь сами!

Как удалить в списке значения, которые повторяются?

У меня есть код, он парсит данные и получает всегда список с значениями в которых повторяются начальные элементы, а потом идёт никнейм пользователя, хочу удалить повторяющиеся элементы, а оставить имя пользователя, в данном случае повторяющийся элемент это »https://www.instagram.com/’:

all_urls=follow_url.find_elements_by_tag_name('li') i=[i.find_element_by_tag_name('a').get_attribute('href') for i in all_urls] print(i)

в итоге я получаю простой список: [‘https://www.instagram.com/green_delux/’, ‘https://www.instagram.com/sweet_apple_krd/’] и мне нужно убрать всё лишнее и оставить такой исход: [‘green_delux’, ‘sweet_apple_krd’]

  • Вопрос задан более двух лет назад
  • 221 просмотр

Комментировать
Решения вопроса 1

преобразовать list в set , в сете останутся только уникальные элементы (тк не все функции могут принимать set вместо list, можно на всякий случай преобразовать снова в тип «список»)
но тут не набор уникальных элементов нужен, а обрезать всё, что после инстаграмма. Если именно так, то, зная, где резать, можно в каждом элементе в генераторе списка отбрасывать первые 26 символов и последний

i=[i.find_element_by_tag_name('a').get_attribute('href')[26:-1] for i in all_urls]

Способы удаления дубликатов из списка в 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]

Использование set().

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

# Код 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().

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

# Код 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-2024 Русаков Михаил Юрьевич. Все права защищены.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *