• 生成器介绍 分类: 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,
    


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

  • 相关阅读:
    如何让 PADS Layout 识别到板框
    笔记:理想和挣钱
    笔记:知数据不知情况
    关于ie6下拖动滚动条时,div抖动的问题解决
    jQuery 中屏蔽浏览器的F5刷新功能
    jQuery 的append在ie下的兼容性
    协程
    进程
    操作系统的发展史
    python_控制台输出带颜色的文字方法
  • 原文地址:https://www.cnblogs.com/think1988/p/4627978.html
Copyright © 2020-2023  润新知