迭代器 iterator 和 生成器 generator
什么是迭代器:
迭代器是指用iter(可迭代对象)函数返回的对象(实例)
迭代器可以用next(it) 函数获取可迭代对象的数据
迭代器函数:
iter(可迭代对象):从可迭代对象中返回一个迭代器
next(迭代器):从迭代器中获取下一条记录,如果无法获取下一条记录,则触发 StopIteration 异常
说明:
迭代器是访问可迭代对象的一种方式
迭代器只能向前取值,不会后退
用iter函数可以返回一个可迭代对象的迭代器
什么是生成器:
生成器是能够动态提供数据的对象,生成器对象也是可迭代对象(实例)
生成器有两种:
生成器函数
生成器表达式
生成器函数定义:
含有 yield
语句的函数是生成器函数,此函数被调用时将返回一个生成器对象
注:yield 翻译为产生(或生成)
yield语句:
语法:yield 表达式
说明:yield用于def 函数中,目的是将此函数作为生成器函数使用
yield用来生成数据,供迭代器 next(it) 函数使用
如:
def myyield():
yield 2
yield 3
yield 5
for x in myyield():
print(x) #输出 2 3 5
生成器函数说明:
生成器函数的调用将返回一个生成器对象,生成器对象是一个可迭代对象
在生成器函数调用return时会出生一个 StopIteration 异常来通知 next(it) 函数将不再能提供数据
生成器表达式:
语法:
(表达式 for 变量 in 可迭代对象 [if 真值表达式])
注:[里的内容可以省略]
作用:用推导式的形式生成一个新的生成器
示例:
gen = (x**2 for x in range(1,4))
it = iter(gen)
next(it) #1
next(it) #4
next(it) #9
next(it) #StopIteration
优点:不占用内存空间
发表评论