可能重复:
How do you split a list into evenly sized chunks in Python?
这个想法很简单,我想做这样的事情:
for elem1, elem2, elem3 in list:
<some code>
为了实现这个目的,我们需要列表是3个迭代的列表,如下所示:
list = [[1, 2, 3], [4, 5, 6]]
但是,如果此列表只是一个常规列表,我该怎么办?
list = [1, 2, 3, 4, 5, 6]
有没有快速简单的方法将这个常规列表转换为3次迭代列表,这样循环就可以了?或者n-iterables,我在这里使用3作为例子。
感谢。
答案 0 :(得分:4)
使用itertools中的grouper
食谱:
def grouper(n, iterable, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
等等:
for a, b, c in grouper(3, some_list):
pass # whatever