zoukankan      html  css  js  c++  java
  • 生成器介绍 分类: python 小练习 python基础学习 divide into python 2013-12-31 21:17 226人阅读 评论(0) 收藏

    dive into python P345
    1. 函数中出现关键字yield,则它是一种每次生成一个值特殊函数调用它会返回一个生成器对象,它可以返回x的连续值
    2. 调用含有yield关键字的函数,即可创建一个生成器的实例
    3. 不断调用生成器对象的next()方法将从你上次离开的位置重新开始,并继续下去,直到又遇到yield语句。

    #coding:utf-8
    --使用生成器,返回小于n的元素值,myield函数返回一个生成器对象
    def myyiled(n):
        a,b=0,1
        while a<n:
            yield a
            a,b=a+b,a
    --使用生成器,返回前n项的元素值,my函数返回一个生成器对象
    def my(n):
        a,b=0,1
        for i in range(n):
            yield a
            a,b=a+b,a
    
    if __name__=="__main__":
        for i in myyiled(10):
            print i,   # 0 1 1 2 3 5 8 
    
        print
    
        for i in my(10):
            print i,  # 0 1 1 2 3 5 8 13 21 34



    def make_counter(x):
        print 'entering make_counter function'
        while 1:
            yield x
            print 'incrementing x'
            x+=1
    
    if __name__ == '__main__':
    
        #返回一个生成器对象
        counter = make_counter(2)
        #调用生成器对象的next方法
        print counter.next() # 2
        print counter.next() # 3
    


    或输出10项:

    def main(n):
        while 1:
            yield n
            n+=1

    if __name__ == '__main__':
        m = main(0)
        for i in range(10):
            print m.next(),  # 结果:0 1 2 3 4 5 6 7 8 9

    # for循环将会创建一个生成器对象并连续调用其next方法获得值并赋予循环变量i,如下

    def main(x):
        print 'entering main'
        while x:
            yield x
            x-=1
    
    if __name__ == '__main__':
        #调用main函数,返回一个生成器对象
        for i in main(10):
            print i,
    


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    spring cloud-之入门技术选型的抉择
    jvm系列之-gc日志查看
    jvm系列之-参数设置
    Code completion has become quite slow under Delphi7
    Python4Delphi注意事项
    SHFileOperation删除文件夹
    开漏输出,推挽输出
    DxGrexpt中的ExcelFormat (BIFF)
    通过exe名字查询句柄,String与ShortString转换函数分析
    Netstat判断商品是否正在使用
  • 原文地址:https://www.cnblogs.com/think1988/p/4627978.html
Copyright © 2011-2022 走看看