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

Как удалить все вхождения элемента из списка python

  • автор:

Как удалить все вхождения элемента из списка(Python)

Судя по вашему коду, надо удалить дубликаты из списка:

Нагляднее всего через списковое включение делать:

По сути это, конечно, фильтрация, но для настоящей фильтрации именно в список приходится писать лишние конструкции list и lambda , а списковое включение получается максимально коротким и понятным.

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

Предлагаю ещё один вариант. Так как на входе у Вас все равно строка, можно удалить все вхождения из строки, заменив их на пустую строку, а затем преобразовать её в список. Вот так :

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

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

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

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

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

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

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

Она выглядит вот так:

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

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

Удалить все вхождения элемента из списка Python

В этом посте будет обсуждаться, как удалить все вхождения элемента из списка в Python.

1. Использование list.remove() функция

list.remove(x) удаляет первое вхождение значения x из списка, но не может удалить все вхождения значения x из списка.

Чтобы удалить все вхождения элемента из списка, используя list.remove() , вы можете воспользоваться тем, что он поднимает ValueError когда он не может найти указанный элемент в списке. Идея состоит в том, чтобы многократно вызывать remove() функционировать до тех пор, пока не возникнет ValueError исключение. Это показано ниже:

2. Использование понимания списка

Рекомендуемое решение — использовать понимание списка. С помощью списков вы можете создать подсписок тех элементов, которые удовлетворяют определенному условию. Понимание списка состоит из выражения, за которым следует цикл for, за которым следует необязательный цикл for или оператор if, заключенный в квадратные скобки. [] .

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

3. Использование filter() функция

Вы также можете использовать встроенную функцию filter(function, iterable) , который может построить iterator из элементов списка ( iterable) для которого функция возвращает истину.

Обратите внимание, что filter(function, iterable) эквивалентно генераторному выражению (item for item in iterable if function(item)) . Это показано ниже:

Python – Удалить все вхождения элемента из списка

Список Python – удалить все вхождения элемента

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

Есть много способов удалить все элементы с определенным значением из списка. Ниже приведены некоторые из них, которые мы обсудим в этом руководстве.

  1. Итайте через элементы списка и используют метод удаления (), когда значение элемента соответствует элементу нашего интереса.
  2. Фильтруйте список с помощью функции лямбда, имеющие условие, что предмет должен быть не предметом нашего интереса.
  3. Итайте по поводу предметов, пока элемент находится в списке и использует метод удаления ().

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

Пример 1: Удалите все вхождения в списке, используя для петли

В следующем примере мы переживаем каждый элемент в списке, используя Python для LOOP, и когда мы находим совпадение для удаления элемента, мы позвоним удалить () в списке.

Пример 2: Удалить все вхождения в списке с помощью фильтра

Мы фильтруем эти элементы списка, которые не равны __ne__ на предмет.

Пример 3: Удалите все вхождения в списке, используя во время оператора

Хотя есть совпадение с элементом в списке, вызов Удалить () функцию в списке.

Резюме

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

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

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