用Python方法在给定谓词为真的元素之后拆分列表 [英] Pythonic way to split a list after elements for which a given predicate is true

查看:53
本文介绍了用Python方法在给定谓词为真的元素之后拆分列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设您有一个任意元素列表,例如

Assume you have a list of arbitrary elements like

['monkey', 'deer', 'lion', 'giraffe', 'lion', 'eagle', 'lion', 'fish']

,对于每个给定谓词(例如,

which should be split into sublists after each element for which a given predicate, e.g.

is_lion(element)

返回True.上面的例子应该变成

returns True. The above example should become

[['monkey', 'deer', 'lion'], ['giraffe', 'lion'], ['eagle', 'lion'], ['fish']]

是否有一种Python方式来做到这一点?

Is there a pythonic way of doing it?

推荐答案

最简单的方法可能是:

out = [[]]
for element in lst:
    out[-1].append(element)
    if predicate(element):
        out.append([])

请注意,这将在out的末尾留下一个空列表,对于最后一个element则在if predicate(element):末尾.您可以通过添加以下内容来删除它:

Note that this would leave an empty list at the end of out, if predicate(element): for the last element. You can remove this by adding:

out = [l for l in out if l]

这篇关于用Python方法在给定谓词为真的元素之后拆分列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆