Python迭代器iterator和生成器generator实例,生成器表达式语法

Python迭代器iterator和生成器generator实例,生成器表达式语法

迭代器 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

优点:不占用内存空间


最后编辑于:2019/08/19作者: 牛逼PHP

发表评论