为何去掉打印迭代器列表才能执行后续代码?
难以理解的代码执行行为:为何去掉打印迭代器列表才能执行后续代码
在代码中,函数y创建了一个生成器,该生成器以列表t中的元素作为其yield值,而函数exec依次打印迭代器g的列表表示以及其每个元素。
但当代码中打印g的列表表示时,就会引发一个奇怪的行为:for i in g循环无法执行。这是因为list(g)在生成器g上进行了一次完整迭代,消耗了所有元素。
因此,当后续的for i in g循环尝试遍历g时,由于迭代器已被耗尽,导致没有元素可供遍历。在这种情况下,for循环将不会执行。
为了解决此问题,可以避免在代码中使用list(g),因为它会消耗迭代器。相反,可以采用更显式的迭代方式,例如使用iter函数或next函数。例如:
def exec(g): # 逐个迭代 g 而不消耗它 for i in iter(g): print(i)
或者,使用next函数:
def exec(g): while True: try: i = next(g) print(i) except StopIteration: break
文章推荐
-
Python实现字典的key和values的交换
有些时候我们不得已要利用values来反向查询key,有没有简单的方法呢?下面我给大家列举一些方法,方便大家使用pyth...
Python
2个月前 (02-11) 244 -
使用Python脚本来获取Cisco设备信息的示例
今天发现一个使用python写的管理cisco设备的小框架tratto,可以用来批量执行命令。下载后主要有3个文件:Sy...
Python
2个月前 (02-11) 132 -
Python的Django中django-userena组件的简单使用教程
利用twitter/bootstrap,项目的基础模板算是顺利搞定。接下来开始处理用户中心。用户中心主要包括用户登陆、注...
Python
2个月前 (02-11) 120 -
零基础写python爬虫之神器正则表达式
接下来准备用糗百做一个爬虫的小例子。但是在这之前,先详细的整理一下Python中的正则表达式的相关内容。正则表达式在Py...
Python
2个月前 (02-11) 136 -
零基础写python爬虫之抓取百度贴吧代码分享
这里就不给大家废话了,直接上代码,代码的解释都在注释里面,看不懂的也别来问我,好好学学基础知识去! 代码如下:# -*-...
Python
2个月前 (02-11) 122
最新文章
- 微信三级分销系统产品详情页怎么开发? 1个月前 (03-13)
- 微信公众号-获取用户信息(网页授权获取)实现步骤 1个月前 (03-13)
- php微信公众号开发(2)百度BAE搭建和数据库使用 1个月前 (03-13)
- php微信公众号开发(3)php实现简单微信文本通讯 1个月前 (03-13)
- php微信公众号开发(4)php实现自定义关键字回复 1个月前 (03-13)
- php版微信小店调用api示例代码 1个月前 (03-13)
- php版微信小店API二次开发及使用示例 1个月前 (03-13)
- C# 微信公众号开发--准备工作 1个月前 (03-13)
- C#微信公众号开发--微信事件交互 1个月前 (03-13)
- C#微信公众号开发--网页授权(oauth2.0)获取用户基本信息一 1个月前 (03-13)