如何迭代python for循环中的多个元素

时间:2013-01-14 08:04:53

标签: python

  

可能重复:
  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作为例子。

感谢。

1 个答案:

答案 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