用Python方法在给定谓词为真的元素之后拆分列表 [英] Pythonic way to split a list after elements for which a given predicate is true
本文介绍了用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屋!
查看全文