使用lambda从开头删除列表项

2024-06-01 08:28:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个网站的面包屑,我想从一开始就用lambda表达式删除所有“Home”条目。你知道吗

比如:

lambda v: v[1:] if v and v[0] == 'Home' else v

但是我想去掉倍数,不仅仅是第一个,而且只是从一开始,这样:

['Home', 'Home', 'Home and Garden', 'Home', 'Kitchen']

变成:

['Home and Garden', 'Home', 'Kitchen']

Tags: andlambdahomeif表达式网站条目else
1条回答
网友
1楼 · 发布于 2024-06-01 08:28:29

也许这就是你的lambda的目的:

>>> F = lambda v: F(v[1:]) if v and v[0] == 'Home' else v
>>> L = ['Home', 'Home', 'Home and Garden', 'Home', 'Kitchen']
>>> F(L)
['Home and Garden', 'Home', 'Kitchen']

然而,这将是低效的,Python已经有了这样的工具:

>>> from itertools import dropwhile
>>> L = ['Home', 'Home', 'Home and Garden', 'Home', 'Kitchen']
>>> list(dropwhile(lambda x: x == 'Home', L))
['Home and Garden', 'Home', 'Kitchen']

或者:

>>> from functools import partial
>>> from operator import eq
>>> from itertools import dropwhile
>>> L = ['Home', 'Home', 'Home and Garden', 'Home', 'Kitchen']
>>> list(dropwhile(partial(eq, "Home"), L))
['Home and Garden', 'Home', 'Kitchen']

这应该更快,bur需要更多的进口

相关问题 更多 >