python-迭代器、生成器

牧云@^-^@ 提交于 2019-12-05 03:18:20

生成器属于迭代器

适合迭代器对象:list、dict、tuple、set、str

不适合迭代对象:int、float、bool

迭代器例子

a = [0,1,2,3]

iter(a) # 用iter()方法生成迭代对象

print(next(a)) #用next来查询,直到超范围

 

判读对象是否符合迭代例子

from collections import Iterable

a = [0,1,2,3]

b = 123

print(isinstance(a, Iterable))  #运用isinstance函数来判断,此结果为True,符合迭代

print(isinstance(a, Iterable)) #同上,此结果为Flase,不符合迭代

 

生成器例子

a = (i  for i in range(1000000))  #想当与列表生成式的[]改成(),此时a的类型为生成器(generator)

print(next(a))  #用next()来查询

 

函数进化成生成器:(把return改成yield)

例子:

def f(n):    for i in range(n):        yield i     print('OKOK')a = f(5)  #定义一个变量来接受生成器的返回值print(next(a)) #程序运行达到yield后就会停止,不会往下执行,所以只打印0print(next(a)) #程序从上个断点yield开始执行,所以先打印'OKOK',在打印1,然后停止print(next(a))print(next(a))print(next(a))# print(next(a))或者用 for循环来打印(一次全部打印完,防止用next()方法来超范围报错)for i in range(a):  print(i)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!