对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                      

 

posted @ 2014-05-26 15:18  Aveen  阅读(212)  评论(0编辑  收藏  举报
Top