使用迭代器实现chop()

时间:2010-06-29 17:52:34

标签: python iterator

当前版本:

def chop(ar,size):
    p=len(ar)/size
    for i in xrange(p):
        yield ar[(i*size):((i+1)*size)]

ar是list()的类型。

我想要的是chop()接受迭代器并返回迭代器。

for i in chop(xrange(9),3):
    for j in i:
       print j,
    print

打印

0 1 2
3 4 5
6 7 8

1 个答案:

答案 0 :(得分:2)

itertools documentation中有一个实现:

def grouper(n, iterable, fillvalue=None):
    "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)