2013-01-14 55 views
1

可能重复:
How do you split a list into evenly sized chunks in Python?HOWTO迭代超过一个元素在Python的for循环

的想法很简单,我希望做这样的事情:

for elem1, elem2, elem3 in list: 
    <some code> 

为了这个工作,我们需要该列表将是一个3-iterables列表,如下所示:

list = [[1, 2, 3], [4, 5, 6]] 

但是,如果此列表只是一个常规列表,该怎么办?

list = [1, 2, 3, 4, 5, 6] 

有没有改变这个规则列表进入3 iterables列表,以便循环将工作中的任何快速简单的方式?或者n-iterables,我只是在这里用3作为例子。

谢谢。

+1

像这样:http://stackoverflow.com/questions/312443/how-do-you-split -a-list-into-uniformity-sized-chunks-in-python? – georg

+0

好的谢谢,对不起,如果我有同样的问题,我试图搜索之前问,但我没有发现任何东西 – Ole

回答

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 
+0

谢谢,真的很简单和优雅的解决方案。 – Ole

+0

@ole这是我的首选,因为它是好的和通用的iterables - 但是 - 在重复的帖子中的负载选项! –

+0

您的解决方案对我来说是最好的,但这只是我的看法 – Ole