1
我想将符合谓词的连续元素分组。一种这样的函数文档测试看起来像Python - 分组满足谓词的连续元素
>>> 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]]
我写了一个原型,我使用itertool的takewhile,而是因为我一直名单和国际热核实验堆之间铸造它的丑陋。我也不想坚持阅读列表的索引,因为它感觉效率低下。有人能指点我如何以正确的方式将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'? –
无法解决如何使用它,但现在我可以。谢谢大家。 – Derek