首页 > 解决方案 > 有没有一种方法可以在 python 中使用 lambda 函数来删除第一次出现

问题描述

我在下面创建了以下 plist。

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

现在要完成的任务是删除字符 p,a,n,D 并将其附加到 plist。但这里的一个条件是,如果有两个 n,则只应删除第一个出现的 n。

我尝试使用 lambda 函数删除它们,但无法仅删除第一次出现的 n 。

Lambda 函数:lst=list(filter(lambda x:x.lower() 不在['o','t',"'",'i','c',' '],plist))

有人可以帮助我了解如何做到这一点。

标签: pythonpython-3.xlambda

解决方案


删除元素的第一次出现

如果您必须使用 lambda(没有它会更容易)。您可以尝试在 lambda 中返回它:

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

在上面的示例中,如果元素的索引与列表中的第一次出现不同,则返回元素。在索引的审查中,您应该在末尾连接元素以避免异常。如果连接的元素是第一次出现,则索引大于列表中的每个索引,因此您返回所有元素。

如果您不使用 lambda:

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)

重要的

在这个例子中,它是“O”的不同“o”

我希望它有帮助


推荐阅读