''' 生成器: generator 1,通过列表推导式 g = (x+1 for x in range(4)) 2,函数+yield def func(): ... yield g = func() 产生元素 1,next(g) 2,g.__next__() ''' from typing import Iterable g = (x *3 for x in range(20)) print(type(g)) #<class 'generator'> #方式1调用生成器 print(g.__next__()) print(g.__next__()) #方式2 系统自带的方法 next() print(next(g)) while True: try: e=next(g) print(e) except: print('没有更多的元素了') break #定义生成器的方式2 ,借助函数完成 ''' 步骤: 1,定义一个函数,函数中使用yield 关键字 2,调用函数,接收调用的结果 3,得到的结果就是生成器 4,借助next() 或者(__next__) ''' def func(): n= 0 while True: n+=1 yield n e = func() print(e) #<generator object func at 0x000001FA4CE3BB88> #生成器,应用协程 def task1(n): for i in range(n): print(f'正在搬第{i}块砖') yield None def task2(n): for i in range(n): print(f'正在听第{i}首歌') yield None g1 = task1(5) g2 = task2(5) while True: try: next(g1) next(g2) except: break ''' 可以被next() 函数调用并不断返回下一个值的对象称为迭代器,Iterastor,只能前进不能后退 ''' #可迭代对象:1,生成器 2,元组,列表,集合,字典,字符串 #判断一个对象是否可以迭代? list1 = [1,1,1,1,1,1] f = isinstance(list1,Iterable) print(f)
py 迭代生成器
最新推荐文章于 2023-06-19 09:36:59 发布