在Python中,生成器和函数很像,都是在运行的过程中才会去确定各种变量的值,所以在很多情况下,会导致各种各样的问题。

def generator_test1():

# 0...9 generator

x = (i for i in range(10))

# 5..9 generator

x_filter = filter(lambda y: y >= 5, x)

# first use the x

L = list(x)

print("L, x", L)

# then use x_filter

l = list(x_filter)

print("l, x_filter", l)

if __name__ == "__main__":

generator_test1()

输出结果为:

L, x [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

l, x_filter []

上述代码中,x_filter是基于生成器x构建的生成器,但是由于x在x_filter使用之前先被用掉了,所以在使用x_filter的时候,才去获取x的值,而此时x已经用完了,最终导致x_filter转化成的列表是空的。

def generator_test2():

x = (i for i in range(10))

for i in range(10):

x = (j + i for j in x)

L = list(x)

print("L, x", L)

if __name__ == "__main__":

generator_test2()

输出结果:

L, x [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

上述代码中,每次循环都基于原先的生成器构建一个新的生成器,由于并未使用,所以生成器x中的i并没有被赋值。在后面转化成列表的时候才去获取i的值,而此时由于i为9,所以所有的生成器x的i都为9,原始的x是0到9的生成器,接下来的10个生成器每个都在原始值上加9,导致每个值都增大了90。下面是此例的一个变体:

def generator_test3():

x = (i for i in range(10))

for i in range(10):

x = (j + i for j in x)

i = 20

L = list(x)

print("L, x", L)

if __name__ == "__main__":

generator_test3()

输出结果:

L, x [200, 201, 202, 203, 204, 205, 206, 207, 208, 209]

上述代码表明,可以临时改变i从而让生成器发生改变。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

自动论文生成器 python_Python生成器常见问题及解决方案相关推荐

  1. 自动论文生成器 python_python生成器

    python生成器 python高级特性 首先, 所有的生成器都是迭代器, 因为生成器完全实现了迭代器的接口. 在python中, 有两种不同的方式提供生成器: 1. 生成器表达式 2. 生成器函数 ...

  2. 为什么焊锡老是粘在烙铁头上_自动焊锡机常见问题及解决方案「由力自动化」...

    随着科技的不断进步,一些行业中机器替代人工是避不可挡的一种发展趋势,自动焊锡机因为所能使用的行业广泛相信很多的朋友都有所了解,那么自动焊锡机器人使用时常见问题有哪些呢,该如何解决呢?下面小编来简单的讲 ...

  3. python小说自动生成器_python- generator生成器

    什么是生成器? 通过列表生成式,我们可以直接创建一个列表,但是,受到内存限制,列表容量肯定是有限的,而且创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后 ...

  4. python生成器函数_【python】生成器和生成器函数

    1.生成器函数: 普通函数: def func(): print("周杰伦") return "昆凌" func() #执行func()函数,"周杰伦 ...

  5. XHTML CSS 常见问题和解决方案

    作为前端开发人员,在日常的页面制作时,不可避免的会碰上这样那样的问题,这时就需要寻找这些 XHTML及CSS常见问题的解决方案.我根据自己的经验和心得挑选和整理了一些XHTML常见问题和CSS常见问题 ...

  6. python生成器next_Python生成器生成next,python,yieldnext

    在实践keras网络模型的时候,发现keras fit_generator与flow_from_directory函数均有关于生成器的频繁使用:因此在本文中对其进行总结. Python 之所以要提供这 ...

  7. 森锐读卡器连接不上_蓝牙接收器配对不成功的常见问题和解决方案

    蓝牙接收器的出现让很多老式音响设备具备了蓝牙功能,我们在使用手机连接蓝牙适配器的同时,可能会遇到配对不成功的情况,特别是iPhone用户,取消配对后就一直连接不上,什么原因呢?今天工程师就来给大家罗列 ...

  8. 网络新系统客户端常见问题及解决方案

    网络新系统客户端常见问题及解决方案 "客户端提示"问题原因以及解决办法  [1]"认证请求被拒绝" 1.用户异常下线,系统中残留有用户记录.上班时间打电话:中心 ...

  9. 收藏:安卓投屏大师TC Display直播常见问题详细解决方案

    安卓投屏大师TC Display(也叫TC DS)是一款可以把手机屏幕投影到电脑上的软件,主要用于直播投屏.教学/会议投影,并满足用户的的日常投影需求.可以把手机屏幕和声音同时传输到电脑上.因为安卓投 ...

最新文章

  1. 电脑怎么分屏2个显示器_程序员一台电脑装2个显示屏?因为专业
  2. 网站内容页面如何优化才利于排名提升?
  3. tcp/ip 协议栈Linux内核源码分析15 udp套接字接收流程二
  4. win10 远程桌面无法连接报错
  5. web图片铺满网页_web单页面实现多个echarts图表铺满整个div(柱状图,折线图,饼形图……)...
  6. Asp.net MVC Filter监控页面性能和运行时间
  7. Contact Manager Web API 示例[4] 异常处理(Exception Handling)
  8. 深度学习之 epoch batch iteration
  9. 中国大陆物联网驶入快车道 台商抢上车
  10. 管脚自动分配_lattice器件管脚评估与功耗评估
  11. Python开发【模块】:Urllib(二)
  12. layer - 简单好用的Web弹出层组件使用详解1(安装配置、消息提示框)
  13. LNMP生产环境部署
  14. 【Java学习笔记】38.Java 发送邮件
  15. 18周过后~(学期总结)
  16. python作业:有一个学生成绩表,包括学号、姓名、高数、英语,计算机。 录入若干个学生学号、姓名、高数、英语,计算机5项数据。 将学生成绩表数据写入文件,文件名为“学生成绩表.txt
  17. 李云大连理工计算机系2015级,大连理工大学计算机科学与技术学院介绍
  18. Python基于逻辑回归的糖尿病视网膜病变检测(数据集messidor_features.arff)
  19. 开源安全的危机在于太相信 GitHub?——专访Apache之父OpenSSF基金会总经理Brain Behlendorf
  20. pwm一个时间单位_PTO PWM

热门文章

  1. 你应当如何学习C++(以及编程)(rev#1)
  2. 用GDAL/OGR去读shapefile
  3. 设置vs2008代码区的背景色
  4. 如何取消 登录_LSAT | 退考、缺考、取消成绩,各自的区别和流程是怎样的?
  5. STC用PCA测量脉宽_教你测量玉手镯圈号及如何轻松快速摘戴玉手镯?
  6. matlab指定间隔符,在matlab中为.dat文件指定小数分隔符[复制]
  7. 少儿编程150讲轻松学Scratch(十一)-用Scratch巧解数学题——判定质数
  8. 怎样恢复oracle函数,Oracle闪回恢复误删除的表、存储过程、包、函数...
  9. mysql字符乱码百度_如何解决MySQL字符集乱码问题
  10. React 解决鼠标移入子元素触发父元素的mouseout事件