1

可能重复:
如何在 Python 中将列表拆分为大小均匀的块?

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

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 作为例子。

谢谢。

4

1 回答 1

5

使用grouper来自 itertools 的配方:

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
于 2013-01-14T08:06:26.373 回答