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

    摘自:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00138681965108490cb4c13182e472f8d87830f13be6e88000

    前面说了列表生成式,那么生成器怎么做呢

    第一种方法,因为前面我们的列表生成式是用[]表示的,所以这里我们把【】换成()就行了

    生成器保存的是算法

    比如说我们的列表生成式是

    k = 【x*x  for  x   in   range(5)】

    那么我们的生成器就是

    g =(x*x   for  x   in   range(5))

    我们怎么调用这个生成器中的元素呢

    一个是使用next()

    >>> g = (x*x for x in range(5))
    >>> g.next()
    0
    >>> g.next()
    1
    >>> g.next()
    4
    >>> g.next()
    9

    但是在实际生产中我们要是调用生成器中的元素的话,我们就使用for循环来迭代

    g =(x*x   for  x   in   range(5))

    for   i    in   g:

      print  i

    还有一种方法就是在函数中定义yield关键字

     这种方法就是用yield关键字了,就像高中的根据规则,推断出函数一样,我们这里只是在里面加了一个yield

    比如说这里的斐波那契函数

    def fib(max):

        n,a,b = 0,0,1

            while n < max:

    #    print b

          yield b

        a,b = b,a+b

        n = n+1

    小结

    generator是非常强大的工具,在Python中,可以简单地把列表生成式改成generator,也可以通过函数实现复杂逻辑的generator。

    要理解generator的工作原理,它是在for循环的过程中不断计算出下一个元素,并在适当的条件结束for循环。对于函数改成的generator来说,遇到return语句或者执行到函数体最后一行语句,就是结束generator的指令,for循环随之结束。

  • 相关阅读:
    修改spring boot 启动logo
    查看jvm常用命令
    intellij IDEA破解
    hdu 新生晚会
    How many prime numbers(素数)
    2077 汉诺塔IV
    Factorial
    双人黑白块
    EasyX
    七夕情人节
  • 原文地址:https://www.cnblogs.com/smail-bao/p/5666020.html
Copyright © 2011-2022 走看看