ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python生成器的推导式

2022-04-10 13:01:34  阅读:189  来源: 互联网

标签:__ 推导 Python 生成器 ret next func print


 

普通函数采用return返回值

def func():
    print("111")
    return 222     #return返回一个值

ret =func() print(ret)
结果:
111
222

将函数中的return换成yield就是生成器

def func():
    print("111")
    yield 222 # 整个函数是一个生成器

ret =func()
print(ret)

结果:

<generator object func at 0x0000024277AB44A0>

通过执行_next_()来执行以下生成器

def func():
    print("111")
    yield 222 # 整个函数是一个生成器

mygenerator=func()
print(mygenerator.__next__())
结果:
111
222

yield是分段来执行一个函数,而return是直接停止执行函数

def func():
    print("111")
    yield 222
    print("333")
    yield 444

mygenerator=func()
ret=mygenerator.__next__()
print(ret)
ret=mygenerator.__next__()
print(ret)
ret=mygenerator.__next__() #最后一个yield执行完毕,再次__next__()程序会报错
print(ret)

生成器可以使用for循环来循环获取内部的元素:

def func():
    print(111)
    yield 222
    print(333)
    yield 444
    print(555)
    yield 666

gen=func()
for i in gen:
    print(i)

结果:

111
222
333
444
555
666

 

生成器表达式(生成器推导式)

>>> gen =(i for i in range(10))
>>> type(gen)
<class 'generator'>
>>> gen.__next__()
0
>>> gen.__next__()
1
>>> gen.__next__()
2
>>> gen.__next__()
3

 

生成器的特点:

惰性机制,生成器并不立即产生全部元素,仅在用到元素的时候才生成(只能向前),可以极大节省内存

 

https://www.cnblogs.com/mlhz/p/9469124.html

标签:__,推导,Python,生成器,ret,next,func,print
来源: https://www.cnblogs.com/emanlee/p/16125389.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有