生成器 (generator) 
    #生成器generator 在Python中,这种一边循环一边计算的机制,称为生成器,能节省大量的空间 
   L=[x*x   for   x   in range  (  1  ,  11  )] 
   g=(x*x   for   x   in range  (  1  ,  11  ))   #创建L和g的区别仅在于最外层的[]和(),L是一个list,而g是一个generator 
   next  (g)   #如果要一个一个打印出来,可以通过next()函数获得generator的下一个返回值 
   for   n   in   g:   #用for循环,generator也是可迭代对象 
      print  (n) 
   #举例:斐波那契数列(Fibonacci)除第一个和第二个数外,任意一个数都可由前两个数相加得到 
   #1, 1, 2, 3, 5, 8, 13, 21, 34, ... 
   def   fib(max):   #fib函数是定义了斐波拉契数列的推算规则 
      n,a,b=  0  ,  0  ,  1 
      while   n<max: 
      print  (b) 
    a,b=b,a+b 
    n=n+  1 
      return   'done' 
   #如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator 
   def   fib(max):   #fib函数是定义了斐波拉契数列的推算规则 
      n,a,b=  0  ,  0  ,  1 
      while   n<max: 
      yield     b 
    a,b=b,a+b 
    n=n+  1 
   for   x   in   fib(  7  ): 
      print  (x) 
 
 京公网安备 11010502036488号
京公网安备 11010502036488号