zoukankan      html  css  js  c++  java
  • python中的生成器

    1.简介

    在Python中,生成器是一种边循环边计算的惰性机制,需要我们手动去提取这些元素。

    2.示例

    (表达式   循环体   条件语句)

    注:列表生成式的[]改成(),就创建了一个generator.

    1 >>> L1=[1, 2, 3, 4, 5, 6]
    2 >>> g=(x*x for x in L1)
    3 >>> g
    4 <generator object <genexpr> at 0x0268E968>
    5 >>> next(g)  #也可以使用g.next()
    6 1
    7 >>> next(g)
    8 4

    也可以直接使用循环(避免抛出错误): 

    1 >>> for n in g:
    2       print(n)

    3.函数生成器

    斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到:

    1, 1, 2, 3, 5, 8, 13, 21, 34, ...

    函数:

    1 def fib(max):
    2     n, a, b = 0, 0, 1
    3     while n < max:
    4         print b
    5         a, b = b, a + b
    6         n = n + 1

    计算结果:

    1 >>> fib(4)
    2 1
    3 1
    4 2
    5 3

    如何将上述函数编程生成器呢?方法如下:把print b改为yield b。

    函数:

    1 def fib(max):
    2      n, a, b = 0, 0, 1
    3      while n < max:
    4          yield b
    5          a, b = b, a + b
    6          n = n + 1

    计算结果:

     1 >>> f = fib(6)
     2 >>> f
     3 <generator object fib at 0x104feaaa0>
     4 >>> for n in fib(6):
     5 ... print(n)
     6 1
     7 1
     8 2
     9 3
    10 5
    11 8
  • 相关阅读:
    Fetch the result from result set
    Variable shadowing
    What is Servlet Container
    What is a servletcontext
    Inner Class
    Java中HashMap和TreeMap的区别深入理解
    枚举类
    (转载) 安卓开发学习笔记
    【C和C++】停车场系统
    【算法】常用的排序方法
  • 原文地址:https://www.cnblogs.com/jfl-xx/p/7120206.html
Copyright © 2011-2022 走看看