标签:str 获得 通过 ble 退出 rabl 序列 imp sleep
import time def test(name): print(‘\033[31;m%s已经准备好了,test:\033[0m‘%name) while True: baozi=yield print(‘\033[31;m第%s包子来了,%s吃了\033[0m‘%(baozi,name)) def test1(*args): c1=test(‘逯晓华‘) #指明c1,c2 只是一个生成器 c2=test(‘袁珂‘) c1.__next__() c2.__next__() print(‘我要开始做了:‘) for i in range(1,10): c1.send(i) c2.send(i) if i%2==0: print(‘\033[31;m嗯,你俩一人一半\033[0m‘) time.sleep(3) test1(‘大厨‘) #c1.__next__() 只是运行到yield #c2 也是一样 #在以后的for循环里c1.__next__()起一个给yield 赋值,并且再一次运行到 yield #以后的每次循环都是这样
上面的是生成器的运用#
迭代器:
可以被for循环的称谓可迭代对象(iterable) 例如:(列表,元素,集合)等等(list,tuple,dict,str)
可以用next的被称为迭代器对象
列表转换为迭代器对象用iter函数
list.iter
a=[1,2,3] b=iter(a) print(b.__next__()) print(b.__next__()) print(b.__next__())
python的iterator ,iterator对象可以被next(),数据流可以看作一个有序的数列,但我们却不能知道他的长度
小结:
凡可作用于for 循环的对象都是iterable类型
凡可以于next()函数的对象都是iterator对象,他表示一个惰性计算序列
集合序列等可以通过iter 函数获得一个迭代器对象。
等价于for循环
it=iter([1,2,3,4]) while True: try: x=next(it) print(x) except StopIteration: #遇到StopIteration 错误就退出 break
X获得下一个值
标签:str 获得 通过 ble 退出 rabl 序列 imp sleep
原文地址:https://www.cnblogs.com/yuanke98/p/9197973.html