ICode9

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

Python基础篇之生成器

2022-04-23 01:33:00  阅读:173  来源: 互联网

标签:__ 继续执行 nums Python 生成器 基础 next print


Python基础篇之生成器

python中的生成器平时用的较少,这也跟我的工作性质不无关系,今天记录下生成器的几种用法,督促自己在技术上不至于落后太多。

生成器,是一个用来创建迭代器的工具,简答而又强大。下面看看生成器的几种用法。

生成器函数

主要使用yield语句,每个yield 会临时暂停处理,记住当前位置执行状态(包括局部变量和挂起的 try 语句)。当该生成器恢复时,它会从离开位置继续执行(这与每次调用都从新开始的普通函数差别很大)

例:

def genNum(n):
   print("生成数字:")
   for i in range(n):
       yield i
       print("继续执行")
nums = genNum(4)
print(next(nums))
for num in nums:
   print(num)
   
运行结果:
生成数字:
0
继续执行
1
继续执行
2
继续执行
3
继续执行

上述例子中,genNum本质生成了__next__函数,因此,在使用next()函数时会调用__next__,输出0,并停止在此处,下面调用for迭代,本质也是使用了__next__函数。

生成器表达式

在列表list中使用生成器表达式

nums = [i*i for i in range(4)]
print(nums)
运行结果:
[0,1,4,9]

在元组tuple中使用生成器表达式

nums = (i for i in range(4))
print(nums)
print(next(nums))
运行结果:
   <generator object <genexpr> at 0x000001CDD6860F90>
   0

在字典dict中使用生成器表达式

dict1 = {x: '%s'%x for x in range(4)}
print(dict1)
{0: '0', 1: '1', 2: '2', 3: '3'}   

总结

python中创建生成器有以上两种方式,优点代码比较简洁,缺点只能遍历一次。

欢迎对python感兴趣的小伙伴联系我呀~

标签:__,继续执行,nums,Python,生成器,基础,next,print
来源: https://www.cnblogs.com/saltape/p/16181285.html

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

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

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

ICode9版权所有