python列表生成器语法_Python语法 - 生成器
发布日期:2021-10-31 18:34:30 浏览次数:25 分类:技术文章

本文共 1518 字,大约阅读时间需要 5 分钟。

生成器基本概念

1 生成器不会把结果保存在一个系列中,而是保存生成器的状态,在每次进行迭代时返回一个值,直到遇到StopIteration异常结束

2 生成器表达式能做的事情列表解析基本都能处理,只不过在需要处理的序列比较大时,列表解析比较费内存,所以生成器可以用在需要节省内存的场景

3 生成器函数: 在函数中如果出现了yield关键字,那么该函数就不再是普通函数,而是生成器函数

4 next( generator object) 可以用于获取生成器返回的值

例子

def test():

i = 0

while True:

yield i

i += 1

I = test()

print (next(I))

print (next(I))

也可以用下面方式迭代,效果一样

print( I.next() )

print( I.next() )

注意: 直接

print( next(test()) )

print ( next(test()) )

是错误的,因为是俩个实例,所以输出都会是0

yield 与 return

在一个生成器中,如果没有return,则默认执行到函数完毕时返回StopIteration;

如果遇到return,如果在执行过程中 return,则直接抛出 StopIteration 终止迭代。

如果在return后返回一个值,那么这个值为StopIteration异常的说明,不是程序的返回值

def test():

i = 0

while True:

yield i

i += 1

if i > 5:

break

print( I.next() )

print( I.next() )

print( I.next() )

print( I.next() )

print( I.next() )

print( I.next() )

print( I.next() )

输出

0

1

2

3

4

5

Traceback (most recent call last):

File "C:\string.bak.py", line 31, in

print( I.next() )

StopIteration

生成器支持的方法

>>>help(odd_num)

Helpon generator object:

odd=classgenerator(object)

|Methods defined here:

......

|close(...)

|close()->raiseGeneratorExitinside generator.

|

|send(...)

|send(arg)->send'arg'into generator,

|returnnextyielded value orraiseStopIteration.

|

|throw(...)

|throw(typ[,val[,tb]])->raiseexceptioningenerator,

|returnnextyielded value orraiseStopIteration.

......

close方法

手动关闭生成器函数,后面的调用会直接返回StopIteration异常

next方法

对于普通的生成器,第一个next调用,相当于启动生成器,会从生成器函数的第一行代码开始执行,直到第一次执行完yield语句(第4行)后,跳出生成器函数。

然后第二个next调用,进入生成器函数后,从yield语句的下一句语句(第5行)开始执行,然后重新运行到yield语句,执行后,跳出生成器函数,

后面再次调用next,依次类推

转载地址:https://blog.csdn.net/weixin_40006779/article/details/110275137 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python爬取豆瓣图书top250_「豆瓣读书250」爬取豆瓣TOP250书单 - seo实验室
下一篇:python链接微信接口开发教程_Python调用微信公众平台接口操作示例

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月11日 05时25分12秒