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