对python生成器特性使用的好例子
1 1.对序列进行分组的函数(摘自web.py源码utils.py文件中) 2 def group(seq, size): 3 """ 4 Returns an iterator over a series of lists of length size from iterable. 5 6 >>> list(group([1,2,3,4], 2)) 7 [[1, 2], [3, 4]] 8 >>> list(group([1,2,3,4,5], 2)) 9 [[1, 2], [3, 4], [5]] 10 """ 11 def take(seq, n): 12 for i in xrange(n): 13 yield seq.next() #当seq迭代到最后一个元素直到没有时,抛出StopIteration被外层的list()捕获 14 if not hasattr(seq, 'next'): 15 seq = iter(seq) 16 while True: 17 inger=take(seq, size) 18 x = list(inger) 19 if x: 20 yield x 21 else: 22 break