假设您有一个任意元素的列表,如
['monkey', 'deer', 'lion', 'giraffe', 'lion', 'eagle', 'lion', 'fish']
应该在给定谓词的每个元素之后将其拆分为子列表,例如
is_lion(element)
回报True.上面的例子应该成为
[['monkey', 'deer', 'lion'], ['giraffe', 'lion'], ['eagle', 'lion'], ['fish']]
这是一种pythonic方式吗?
最简单的方法可能是:
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)