Способы удаления дубликатов из списка в 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.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.
Как сделать — Удалить дубликаты Python из списка
Сначала у нас есть список, который содержит дубликаты:
Список с дубликатами
mylist = [«a», «b», «a», «c», «c»]
mylist = list(dict.fromkeys(mylist))
print(mylist)
Создайте словарь, используя элементы списка в качестве ключей. Это автоматически удалит все дубликаты, поскольку словари не могут иметь дубликатов ключей.
Создать словарь
mylist = [«a», «b», «a», «c», «c»]
mylist = list( dict.fromkeys(mylist) )
print(mylist)
Затем преобразуйте словарь обратно в список:
Преобразовать в список
mylist = [«a», «b», «a», «c», «c»]
mylist = list( dict.fromkeys(mylist) )
print(mylist)
Теперь у нас есть список без каких-либо дубликатов, и он имеет тот же порядок, что и исходный список.
Распечатайте список, чтобы продемонстрировать результат
Распечатать список
mylist = [«a», «b», «a», «c», «c»]
mylist = list(dict.fromkeys(mylist))
print(mylist)
Создание функции
Если вы хотите иметь функцию, в которой вы можете отправлять свои списки и получать их обратно без дубликатов, вы можете создать функцию и вставить код из приведенного выше примера.
Пример
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 видео
ВЫБОР ЦВЕТА

курс сегодня!
Сообщить об ошибке
Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:
Ваше предложение:
Спасибо Вам за то, что помогаете!
Ваше сообщение было отправлено в SchoolsW3.
ТОП Учебники
ТОП Справочники
ТОП Примеры
Получить сертификат
SchoolsW3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.
Как удалить повторяющиеся значения из списка в Python?
Для удаления повторяющихся значений из списка в Python можно использовать несколько подходов. Один из способов — использование множества (set) для удаления повторяющихся элементов.
# Пример использования множества для удаления повторяющихся значений my_list = [1, 2, 3, 2, 4, 5, 4, 6, 1] my_list = list(set(my_list)) print(my_list)
Вывод: [1, 2, 3, 4, 5, 6] Еще одним способом является использование списка списков и цикла for для проверки и удаления повторяющихся значений.
# Пример использования цикла for для удаления повторяющихся значений my_list = [1, 2, 3, 2, 4, 5, 4, 6, 1] new_list = [] for item in my_list: if item not in new_list: new_list.append(item) print(new_list)
Вывод: [1, 2, 3, 4, 5, 6] Надеюсь, это поможет вам удалить повторяющиеся значения из списка в Python!
Детальный ответ
Как из списка удалить повторяющиеся значения в Python
Python предоставляет несколько способов удаления повторяющихся значений из списка. Давайте рассмотрим несколько подходов.
1. Использование множества (set)
Множество (set) в Python содержит только уникальные элементы. Поэтому один из способов удалить повторяющиеся значения — преобразовать список в множество и затем обратно в список.
# Исходный список my_list = [1, 2, 3, 2, 1, 4, 5, 4] # Преобразование в множество и обратно в список my_list = list(set(my_list)) print(my_list) # Результат: [1, 2, 3, 4, 5]
Этот метод работает для любого типа элементов списка, но может изменить порядок элементов. Если вам важен порядок, используйте следующий подход.
2. Использование списка с уникальными значениями
Если вы хотите сохранить порядок элементов и удалить повторяющиеся значения, можно создать новый список и добавлять элементы в него только в том случае, если они еще не были добавлены.
# Исходный список my_list = [1, 2, 3, 2, 1, 4, 5, 4] # Создание нового списка с уникальными значениями unique_list = [] for item in my_list: if item not in unique_list: unique_list.append(item) print(unique_list) # Результат: [1, 2, 3, 4, 5]
Этот метод также работает для различных типов элементов списка. Для более краткого кода можно использовать генераторы списков.
3. Использование генератора списка с условием
Генераторы списков позволяют создавать списки на основе другого списка с помощью условий. В данном случае мы можем использовать генератор списка для создания нового списка с уникальными значениями.
# Исходный список my_list = [1, 2, 3, 2, 1, 4, 5, 4] # Создание нового списка с уникальными значениями с использованием генератора списка unique_list = [item for item in my_list if my_list.count(item) == 1] print(unique_list) # Результат: [3, 5]
В этом случае мы создаем новый список, добавляя только те элементы, которые встречаются только один раз в исходном списке. Этот метод сохраняет порядок элементов и работает как для числовых, так и для других типов значений.
4. Использование модуля collections
Модуль collections в Python предоставляет контейнеры и функции, которые могут помочь решить различные задачи с коллекциями данных. Один из них — класс Counter, который позволяет подсчитывать количество каждого элемента в списке.
from collections import Counter # Исходный список my_list = [1, 2, 3, 2, 1, 4, 5, 4] # Получение списка с уникальными значениями с использованием Counter unique_list = [item for item, count in Counter(my_list).items() if count == 1] print(unique_list) # Результат: [3, 5]
В этом случае мы используем класс Counter для подсчета количества каждого элемента в исходном списке, а затем создаем новый список, добавляя только те элементы, у которых количество равно 1.
Заключение
Теперь у вас есть несколько способов удаления повторяющихся значений из списка в Python. Вы можете выбрать подход, который лучше всего подходит для вашей конкретной ситуации, учитывая порядок элементов и тип значений в списке.
Как удалить в списке значения, которые повторяются?
У меня есть код, он парсит данные и получает всегда список с значениями в которых повторяются начальные элементы, а потом идёт никнейм пользователя, хочу удалить повторяющиеся элементы, а оставить имя пользователя, в данном случае повторяющийся элемент это »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’]
- Вопрос задан более года назад
- 176 просмотров
Комментировать
Решения вопроса 1
преобразовать list в set , в сете останутся только уникальные элементы (тк не все функции могут принимать set вместо list, можно на всякий случай преобразовать снова в тип «список»)
но тут не набор уникальных элементов нужен, а обрезать всё, что после инстаграмма. Если именно так, то, зная, где резать, можно в каждом элементе в генераторе списка отбрасывать первые 26 символов и последний
i=[i.find_element_by_tag_name('a').get_attribute('href')[26:-1] for i in all_urls]
