python-迭代器生成器
Posted lovesix
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-迭代器生成器相关的知识,希望对你有一定的参考价值。
生成器属于迭代器
适合迭代器对象: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后就会停止,不会往下执行,所以只打印0
print(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)
以上是关于python-迭代器生成器的主要内容,如果未能解决你的问题,请参考以下文章