码迷,mamicode.com
首页 > 编程语言 > 详细

python学习随笔(七)迭代器

时间:2017-04-27 00:29:16      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:print   send   随笔   range   obj   返回   生成器   imp   函数返回   

1 生成一个迭代器

sex = iter([‘赵‘,‘钱‘,‘孙‘,‘李‘])    #生成迭代器
print(sex)
print(sex.__next__())           #读取迭代器内容方法 iter.__next__()
sex_1 = sex.__next__()
print(sex_1)


‘’‘
<list_iterator object at 0x000001B26572B780>
赵
钱
’‘’

2 生成器  yield

在函数中使用yield,使函数返回一个迭代器,这个函数叫生成器,yield 后面的值可以返回,yield也可以接收传递的值

#可以中断生成器函数,下次从中断处开始执行
def cash_money(amount):
    while amount > 0:
        print(‘取钱!‘)
        yield 100
        amount -=100

def cost_money():
    print(‘花完了!‘)

atm = cash_money(1000)
print(atm.__next__())
print(atm.__next__())
cost_money()
print(atm.__next__())


‘’‘
取钱!
100
取钱!
100
花完了!
取钱!
100
’‘’
import time

def customer(name):
    print("%s准备吃包子了。。。" %name)
    while True:
        baozi = yield
        print("%s吃了%s个包子。。。" %(name, baozi))

def conductor(name1):
    print("%s开始做包子了。。。" %name1)
    a = customer(‘A‘)     #用生成器函数得到一个迭代器
    b = customer(‘B‘)
    a.__next__()      #读取迭代器中内容,预备读取yield中的内容
    b.__next__()
    for i in range(10):
        time.sleep(2)
        print("第%s次做了2个包子。。。" %(i+1))
        a.send(1)    #向生成器中的yield传入值
        b.send(1)

conductor("zhu")

‘’‘
zhu开始做包子了。。。
A准备吃包子了。。。
B准备吃包子了。。。

第1次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第2次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第3次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第4次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第5次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第6次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第7次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第8次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第9次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
第10次做了2个包子。。。
A吃了1个包子。。。
B吃了1个包子。。。
’‘’

  

 

python学习随笔(七)迭代器

标签:print   send   随笔   range   obj   返回   生成器   imp   函数返回   

原文地址:http://www.cnblogs.com/zsw900610/p/6771672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!