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

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

生成器:只有在调用的时候才会生成相应的数据(调用到这个数据的时候才会生成这个数据,没有调用到时就没有这个数据) 只记录数据的当前位置 生成器不能像普通的列表一样,通过下标或者切片的方式去取 生成器只能通过 循环 或者__next__()(2.x中用next())方法去取。 """ # 创建生成器 """ # 方法一: generator1 = ( i*i for i in range(10) ) for i in generator1:     print(i) """ # 生成一个列表,保存一个计算20次的斐波那契数列: # 斐波那契数列:除第一个和第二个数外,任意一个数都可由前两个数相加得到。 """ # 普通的方法,用一个函数实现: def fib(max):     n, a, b = 0, 0, 1     while n < max:         print(b)         a, b = b, a + b # 注意,赋值语句a, b = b, a + b                         # 相当于:                         # t = (b, a + b)    #t是一个tuple(元组)                         # a = t[0]                         # b = t[1]         n += 1     return 'done' fib(20) """ # 方法二: # 使用生成器,来生成一个斐波那契数列: def fib(max):     n, a, b = 0, 0, 1     while n < max:         yield b # 注意这里的区别         a, b = b, a + b # 注意,赋值语句a, b = b, a + b                         # 相当于:                         # t = (b, a + b)    #t是一个tuple(元组)                         # a = t[0]                         # b = t[1]         n += 1     # 这个函数因为使用了yield,它便不能再称之为函数,而应该称之为生成器     # 而这里的return的返回值,值返回给一个异常状态下的值     # 比如这里当所有数据都生成完成后,没有数据了,会返回这么一个异常:StopIteration: done,这个done是可以自定义的,就是通过下面的这个return     return 'done' fib_generator = fib(20) print(fib_generator) print(fib_generator.__next__()) print(fib_generator.__next__()) print(fib_generator.__next__()) print(fib_generator.__next__()) print(fib_generator.__next__()) print(fib_generator.__next__()) print(fib_generator.__next__()) print('start fib_generator:') #for i in fib_generator: # 注意:前面因为已经使用next方法,取过几个数据了,所以这里直接从最后一次取值的地方开始循环 #    print(i) while True:     try:         fib_value = fib_generator.__next__()         print("fib_value: %s" % fib_value)     except StopIteration as fibs:         print("Generator return value: %s " % fibs.value)         break

转载于:https://www.cnblogs.com/zjltt/p/6913311.html

你可能感兴趣的文章
UVA 814 The Letter Carrier's Rounds(JAVA基础map)
查看>>
BZOJ5343[Ctsc2018]混合果汁——主席树+二分答案
查看>>
linux 如何降低入向收包软中断占比
查看>>
小知识点(不定更新)
查看>>
css绝对定位中的初始包含块问题
查看>>
智能指针
查看>>
phpcms导航栏多个栏目调用
查看>>
人脸识别 参考 转盒子
查看>>
SDUT OJ 顺序表应用2:多余元素删除之建表算法
查看>>
CSS
查看>>
Android笔记之为TextView设置边框
查看>>
【Lift】Scala Web 框架——Lift(一)准备工作
查看>>
【转载】增强学习(Reinforcement Learning and Control)
查看>>
GNU使用find命令
查看>>
java的执行与加载的过程
查看>>
8.2 sikuli 集成进eclipse 报错:Getting the VisionProxy.dll: Can not find dependent libraries......
查看>>
2.6.1 XML配置:创建XML文件
查看>>
第六天-数据分类型
查看>>
排版类
查看>>
Java中如何遍历Map对象
查看>>