Py学习  »  njp  »  全部回复
回复总数  1
3 年前
回复了 njp 创建的主题 » 如何在python中按n个元素分组元素,而无需列表切片?

下面是一个使用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: