博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初识python: 生成器
阅读量:6185 次
发布时间:2019-06-21

本文共 1394 字,大约阅读时间需要 4 分钟。

生成器定义理解,直接上代码:

#!/user/bin env python# author:Simple-Sir# time:20181005# 生成器'''# 列表生成式a=[i for i in range(10)]print(a)def fun_add(a,b):    return a+bb = [fun_add(i,j) for i in range(1,4) for j in range(4,7)]print(b)''''''生成器: 一边循环一边计算的机制,就叫生成器generator循环一次,计算一次,不需要先循环完再计算。生成器只有在调用时才会生成相应的数据,只记录当前位置的值只有一个__next__方法 :获取下一个位置的值''''''# 生成器方式一:列表生成式a = (i*2 for i in range(10))print(a.__next__())''''''# 生成器方式二:函数做生成器# 斐波拉契数列,除了第一个和第二个外,任意一个数都由前两数相加得到。def fblq(max):    n,a,b=0,0,1    # n=0    # a=0    # b=1    while n
# t = (b,a+b) -->(1,0+1) # a=t[0] -->1 # b=t[1] -->0+1 # 而不是 a=b,b=a+b n += 1 return '执行完成' #异常消息f = fblq(10)print('打印第一个位置值',f.__next__())print('打印下一个位置值',f.__next__())print('打印下一个位置值',f.__next__())print('开始循环打印')''''''# 循环打印for i in f: print(i)''''''g = fblq(3)while True: try: x=next(g) print('g',x) except StopIteration as e: print('错误信息',e.value) break''''''def scq_f(): for i in range(5): for j in range(5): k=i+j #print(k) yield k #关键点,将函数变成生成器,即将函数保持中断状态 return '错误信息'# f = scq_f()# for i in f:# print(i)f=scq_f()while True: try: x=next(f) # 即:f.__next__() print('f',x) except StopIteration as e: print('错误信息:',e.value) #获取scq_f的return值
break '''

 

转载于:https://www.cnblogs.com/simple-li/p/9821025.html

你可能感兴趣的文章
洛谷 P1160 队列安排 Label:链表 数据结构
查看>>
LeetCode - 43. Multiply Strings
查看>>
自动化测试===热门开源自动化测试框架
查看>>
HashCode相关
查看>>
用EditPlus编写java程序的时候出现的编码GBK的不可映射字符 的解决方法
查看>>
2919 选择题
查看>>
1042. 字符统计(20)
查看>>
xpath详细讲解
查看>>
ECMAScript 5 —— Array 类型 (二)
查看>>
mysql数据库数据(字段数过大)太多导入不了的解决方法
查看>>
字符串逆序输出
查看>>
【原】Java学习笔记011 - 数组
查看>>
将数组A中的内容和数组B中的内容进行交换。(数组一样大)
查看>>
oracle物化视图
查看>>
浅谈JavaScript中的定时器
查看>>
SpringMVC修改功能
查看>>
Unity 编辑器 Inspector
查看>>
ArcGIS 客户端API加载大量数据的几种解决方法(转载)
查看>>
性能测试初学_loadrunner脚本增强
查看>>
通过队列解决Lucene文件并发创建索引
查看>>