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循环随之结束。

  • 相关阅读:
    给 admin 新建的 hdfs 文件的权限
    linux 常用命令
    如何快速把hdfs数据动态导入到hive表
    Kylin查询性能低下原因分析
    hadoop+hive使用中遇到的问题汇总
    hadoop 突然断电数据丢失问题
    用puthivestreaming把hdfs里的数据流到hive表
    创建 kylin Module/Cube
    【MySQL】MySQL的索引
    【MySQL】MySQL的约束
  • 原文地址:https://www.cnblogs.com/smail-bao/p/5666020.html
Copyright © 2011-2022 走看看