zoukankan      html  css  js  c++  java
  • 迭代器与生成器

    #coding=utf-8
    """
    1、列表生成式
    """
    list1 = [i for i in range(10)]
    print list1
    """生成器 generator 只有在调用的时候才会生成相应的数值、只记录当前位置,
    只有一个__next__方法.python2.7里面是next()一般不用此方法,会使用for循环来遍历生成器
    
    """
    list1 = (i for i in range(10))
    print list1
    #
    #
    # a= 1
    # b=2
    # a,b = b,a+b
    # #相当于
    # t = (b,a+b)
    # a = t[0]
    # b = t[1]
    
    #生成器函数实例
    def fib(value):
        i,j,z = 0,0,1
        while i < value:
            yield z
            j,z = z, j+z
            i +=1
    #   return "end"   python2中不支持return
    
    
    # fiber = fib(10)
    # fiber.next()
    # fiber.next()
    # fiber.next()
    
    #生成器并行的实例
    import time
    def consumer(name):
        print ("%s 准备"%name)
        while True:
            i = yield
            print ("%s is coming %s please ready"%(i,name))
    
    a = consumer("liming")
    a.next()
    a.next()
    
    def product():
        people1 = consumer("xiaoming")
        people2 = consumer("xiaohua")
        people1.next()
        people2.next()
    
        print ("接下来我准备发球了")
        for i in range(10):
            time.sleep(3)
            print ("发球了")
            people1.send("第"+str(i)+"颗球")
            people2.send("第"+str(i)+"颗球")
    
    #product()
    #可迭代的数据类型 列表 、元组、字典、集合、字符串 还有生成器,
    #可迭代对象又称Iterable  可以使用isinstance判断一个对象是否是某个对象
    #可以使用for循环遍历的对象称为可迭代对象,
    #可以被next()函数调用,并不断返回下一个值的对象称为迭代器 Iterator
    
    from collections import Iterable,Iterator
    print isinstance([],Iterable)   #判断迭代对象
    
    isinstance([],Iterator)    #判断迭代器
    print isinstance([i for i in range(10)],Iterator)
    print isinstance((i for i in range(10)),Iterator)      #注意两个的区别
    
    #把可迭代对象变成迭代器,之后就可以使用next()函数了
    i = iter([i for i in range(10)])
    print "iter()函数",isinstance(i,Iterator)
    
    list = [i for i in range(100) if i/2!=0]
    print list
    
  • 相关阅读:
    Balsamiq Mockups完全手册
    LPTSTR、 LPCSTR、LPCTSTR、LPSTR的来源及意义(转)
    Socket编程
    在窗口中绘图(转)
    写博客
    _beginthread还是CreateThread (转)
    CString 与其他类型的转换
    TCP/IP 详述 (转大部分)
    解决svgview控件ax_XXX_Control.SetSRC中出现内存不能为write 遥远的青苹果
    new 与malloc问题 遥远的青苹果
  • 原文地址:https://www.cnblogs.com/qiangayz/p/8544045.html
Copyright © 2011-2022 走看看