Есть ли способ удалить первый случай с использованием лямбда-функции в python - PullRequest
0 голосов
/ 08 марта 2020

У меня есть следующий список, созданный ниже единицы.

plist = ['D', 'o', 'n', 't', '', 'p', 'a', ' n ',' i ',' c ']

Теперь задача, которую нужно выполнить, - удалить символы p, a, n, D и добавить их в plist. Но одно условие здесь состоит в том, что если есть два n, только первый случай должен быть удален.

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

Лямбда-функция: lst = list (фильтр (лямбда x: x.lower () отсутствует в ['o', 't', "'",' i ',' c ',' '], plist) )

Может кто-нибудь помочь мне с некоторыми идеями о том, как это можно сделать.

1 Ответ

0 голосов
/ 08 марта 2020

УДАЛИТЬ ПЕРВОЕ ВОЗНИКНОВЕНИЕ ЭЛЕМЕНТА

Если вам нужно использовать лямбду (было бы проще без нее). Вы можете попробовать вернуть это в лямбда-выражении:

lambda l,e: [x for i,x in enumerate(l) if i!= (l+[e]).index(e)]

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

Если вы не используете лямбду:

def remove_first_occurrence(l,element):
    if element in l:
        l.remove(element) # removes the first occurence
    return l

УДАЛИТЬ ПЕРВОЕ ВРЕМЯ НЕСКОЛЬКИХ ЭЛЕМЕНТОВ

И если вы хотите удалить первое вхождение списка элементов:

def remove_first_occurrence_of_multiple_elements(l, elements):
    for element in elements:
        if element in l:
            l.remove(element)  # removes the first occurence
    return l


plist = ['D', 'o', 'n', 't', ' ', 'p', 'a', 'n', 'i', 'c']
elements_to_remove = ['o', 't', "'", 'i', 'c', ' ']
new_plist = remove_first_occurrence_of_multiple_elements(plist,elements_to_remove)
print(new_plist)

ВАЖНО

В этих примерах это другое «о» от «О»

Надеюсь, это поможет

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