11_生成器、迭代器
2022/4/21 6:19:04
本文主要是介绍11_生成器、迭代器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
# 1.生成器 ''' 如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断地算出 后续的元素?这样就不必创建完整的list,从而节约大量的空间。在Python中,这种 一边循环一边计算的机制,称为生成器。 好处:1.延迟计算、惰性求值 2.节省内存,高效 缺点:无法随机存取 生成器会产生一个对象,而不是一个列表 ''' # 2.yield表达式 ''' 通过函数和yield关键字生成 使用了yield的函数被称为生成器 yield语句一次返回一个结果,在每个结果中间,挂起函数的状态,以便下次从它离开的 地方继续执行 def test(n): for i in range(1,n + 1): yield i print(i) result = test(10) print(result) ''' # 3.生成器表达式 ''' 生成器会产生一个可迭代对象,而不是一个列表。生成器表达式类似列表表达式 将列表生成式中的[]替换成() ge = (x for x in range(1,6)) print(ge,type(ge)) 生成器需要通过next()方法获取数据,调用一次返回一个数据 print(next(ge)) print(next(ge)) print(next(ge)) print(next(ge)) print(next(ge)) *如果通过next函数获取的生成器中的数据取完之后就不能在调用next函数 否则会报错StopIteration 生成器主要通过for-in进行遍历 ''' # 3.迭代对象 ''' 可以直接作用于for-in循环的数据类型都被称为可迭代对象,可以使用isinstance() 判断该对象是否是可迭代对象,可以直接作用于for-in循环的数据类型: 数据结构:list、set、tuple、dict、string generator生成器,()或者使用函数结合yield也可以 for collections import Iterable: print(isinstance("",Iterable)) print(isinstance([],Iterable)) print(isinstance((),Iterable)) print(isinstance(1,Iterable))==>False ''' # 4.迭代器 ''' 迭代器一定是可迭代对象,但是可迭代对象不一定是迭代器 iter():将可迭代对象转换成迭代器,主要针对list、set、tuple、dict、string print(isinstance(iter([]),Iterable)) print(isinstance(iter(()),Iterator)) print(isinstance(iter({}),Iterator)) print(isinstance(iter(""),Iterator)) '''
这篇关于11_生成器、迭代器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性