gpt4 book ai didi

Python——对满足谓词的连续元素进行分组

转载 作者:太空宇宙 更新时间:2023-11-04 09:06:58 25 4
gpt4 key购买 nike

我想对满足谓词的连续元素进行分组。这种功能的 doctest 看起来像

>>> group([1, 2, 3, 0, 4, 5, 0, 0, 6], lambda x: x != 0)
[[1, 2, 3], [4, 5], [6]]
>>> group([1, 2, 3, 0, 4, 5, 0, 0, 6], lambda x: x == 0)
[[0], [0, 0]]

我已经编写了一个原型(prototype),其中我使用了 itertool 的 takewhile,但它很难看,因为我一直在 list 和 iter 之间转换。我也不想坚持阅读列表的索引,因为它感觉效率低下。有人能告诉我如何以正确的方式混合和匹配 itertools 吗?

from itertools import takewhile

def group(l, p):
blocks = []
while True:
i = iter(l)
taken = list(takewhile(p, i))
l = list(i)
if len(taken) > 0:
blocks.append(taken)
if len(l) == 0:
return blocks

谢谢!

最佳答案

你可以使用 itertools.groupby :

In [22]: import itertools as IT

In [23]: [list(g) for k, g in IT.groupby(
[1, 2, 3, 0, 4, 5, 0, 0, 6], lambda x: x != 0) if k]
Out[23]: [[1, 2, 3], [4, 5], [6]]

关于Python——对满足谓词的连续元素进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19567791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com