首页 > 代码库 > python学习随笔(七)迭代器
python学习随笔(七)迭代器
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学习随笔(七)迭代器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。