This question already has answers here:
split list of tuples in lists of list of tuples

(5 个回答)


7年前关闭。




假设你有一个任意元素的列表,比如
['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([])

请注意,这将在 out 的末尾留下一个空列表,最后一个 if predicate(element):element 。您可以通过添加以下内容来删除它:
out = [l for l in out if l]

关于在给定谓词为真的元素之后拆分列表的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22629252/

10-12 19:34