python中迭代器(iterator)、生成器(generator)详解

迭代器(iterator)
什么是迭代器???
迭代器就是通过内建函数iter()函数返回回来的对象,iter()函数的参数是可迭代对象iterable.
常命名为it, 如:it = iter(range(5)), 可以依次从迭代器it中可以取出(0, 1, 2, 3, 4)五个数
如果再向迭代器拿数则会引发StopIteration错误。
迭代器有什么用???
迭代器可以依次访问可迭代对象中的数据
怎么向迭代器要数据???
通过内建函数next()返回一个迭代器中的对象,next()函数的参数是迭代器。
next(it) 执行一次取一个数据对象。
例如:
it = iter(range(5))
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it))
# print(next(it)) # 引发StopIteration错误

生成器(generator)
什么是生成器???
生成器能够动态生成数据的对象,生成器也是可迭代对象
生成器的两种定义方式
【生成器函数】
含有yield语句的函数是生成器函数。生成器函数调用返回一个生成器对象(可迭代对象)
例如:
# 此函数就是返回一个生成器,这个生成器能够提供A B C D四个字符
def func():
for ch in ‘ABCD’:
yield ch
# 取出生成器中的值
for i in func():
print(i)
【生成器表达式】
语法: (表达式 for 变量 in 可迭代对象 [if 真值表达式])
作用
用推导式形式创建一个新的生成器
说明
if 子句可以省略
说明:
生成器对象中的数据是现用现生成,所以不会占用计算机内存

猜你喜欢

转载自blog.csdn.net/qq767852841/article/details/81915707