下面是一个使用itertools(可能是过度杀戮)的解决方案:
第一步。转换
theList
进入发电机:
gList = (x for x in theList)
第二步。
itertools.islice
产生N组(永远):
import itertools as it
z1 = list(it.islice(gList,N)) # [0,1,2]
z2 = list(it.islice(gList,N)) # [3,4,5]
z3 = list(it.islice(gList,N)) # [6,7,8]
z4 = list(it.islice(gList,N)) # [9]
z5 = list(it.islice(gList,N)) # [], etc.
(注意,我们需要重置
gList
在这之后。)
第三步。用另一台发电机将其包裹起来,然后使用
itertools.takewhile
:
import itertools as it
gList = (x for x in theList)
subList = list(it.takewhile(lambda y: len(y) > 0,
(list(it.islice(gList,N)) for _ in it.count(1))))
在这里
it.count(1)
表现得像个
while True:
环