split a generator/iterable every n items in python (splitEvery)

前端 未结 13 1416
臣服心动
臣服心动 2020-11-27 16:44

I\'m trying to write the Haskel function \'splitEvery\' in Python. Here is it\'s definition:

splitEvery :: Int -> [e] -> [[e]]
    @\'splitEvery\' n@ s         


        
13条回答
  •  佛祖请我去吃肉
    2020-11-27 17:31

    def chunks(iterable,n):
        """assumes n is an integer>0
        """
        iterable=iter(iterable)
        while True:
            result=[]
            for i in range(n):
                try:
                    a=next(iterable)
                except StopIteration:
                    break
                else:
                    result.append(a)
            if result:
                yield result
            else:
                break
    
    g1=(i*i for i in range(10))
    g2=chunks(g1,3)
    print g2
    ''
    print list(g2)
    '[[0, 1, 4], [9, 16, 25], [36, 49, 64], [81]]'
    

提交回复
热议问题