zoukankan      html  css  js  c++  java
  • Python学习-迭代器和生成器

     1 '''。在Python中,这种一边循环一边计算的机制,称为生成器:generator。
     2 要创建一个generator,有很多种方法。
     3 可以通过next()函数获得generator的下一个返回值'''
     4 
     5 def fib(max):
     6     n, a, b = 0, 0, 1
     7     while n < max:
     8         #print(b)
     9         yield b
    10         a, b = b, a + b
    11         n = n + 1
    12     return 'done'
    13 
    14 
    15 #_*_coding:utf-8_*_
    16 #@__author__ = 'Alex Li'
    17 
    18 import time
    19 def consumer(name):
    20     print("%s 准备吃包子啦!" %name)
    21     while True:
    22        baozi = yield
    23 
    24        print("包子[%s]来了,被[%s]吃了!" %(baozi,name))
    25 
    26 
    27 def producer(name):
    28     c = consumer('A')
    29     c2 = consumer('B')
    30     c.__next__()   #这样才能启用生成器
    31     c2.__next__()  #这样才能启用生成器
    32     print("老子开始准备做包子啦!")
    33     for i in range(10):
    34         time.sleep(1)
    35         print("做了2个包子!")
    36         c.send(i) #传递参数给yeild
    37         c2.send(i)  #传递参数i给yeild,注意一次只能传输一个参数
    38 
    39 producer("alex")
    40 
    41 #通过生成器实现协程并行运算
    42 
    43 #迭代器
    44 """凡是可作用于for循环的对象都是Iterable(可迭代)类型;
    45 凡是可作用于next()函数的对象都是Iterator(迭代器)类型,它们表示一个惰性计算的序列;
    46 集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()
    47 if 函数获得一个Iterator对象:
    48 """
  • 相关阅读:
    String和StringBuffer相关
    ReactNative 2018了解一下
    发送验证码倒计时效果
    图片实际尺寸大小
    ES6(一)
    组件开发之选项卡-2
    (function(){代码})()自执行函数
    Vue组件学习之三
    Vue下拉菜单实例demo
    窗口大小左右拖动demo
  • 原文地址:https://www.cnblogs.com/Ian-learning/p/8366561.html
Copyright © 2011-2022 走看看