Pythonic方法在给定谓词为真的元素之后拆分列表

Mar*_*ake 4 python list

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

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

应该在给定谓词的每个元素之后将其拆分为子列表,例如

is_lion(element)

回报True.上面的例子应该成为

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

这是一种pythonic方式吗?

jon*_*rpe 5

最简单的方法可能是:

out = [[]]
for element in lst:
    out[-1].append(element)
    if predicate(element):
        out.append([])
Run Code Online (Sandbox Code Playgroud)

请注意,这将在年底离开空列表out,if predicate(element):最后element.您可以通过添加以下内容来删除

out = [l for l in out if l]
Run Code Online (Sandbox Code Playgroud)