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

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

1.列表生成式

In [3]: arr = [i*10 for i in range(10)]

In [4]: arr

Out[4]: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

 

2.生成器

对于arr = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]这种每个元素都可以根据某种算法推算出来,没有必要占用内存空间。

一遍循环,一遍计算--生成器(generator)

 创建generator:

方法一:把[]换成()   ,只能用一次,用于迭代

In [12]: arr = (i*10 for i in range(10))In [13]: for i in arr:    ...:     print(i, end=',')0,10,20,30,40,50,60,70,80,90,In [14]: for i in arr:    ...:     print(i, end=',')In [15]:

 

 

方法二:使用函数作为算法,yield

当调用f.__next__()时,才会执行fib方法,执行到yield时会停下来,并返回结果。下一次调用f.__next__()时,会从上次的yield开始,继续执行,并且保存了运行环境

 

def fib(max):    n, a, b = 0, 0, 1    while max > n:        yield b        a, b = b, a + b        n = n + 1    return 'done'if __name__ == '__main__':    f = fib(3)    print(f)    print(f.__next__())    print(',')    print(f.__next__())    print(',')    print(f.__next__())

 

转载于:https://www.cnblogs.com/zhuxiang1633/p/9349346.html

你可能感兴趣的文章
tableView
查看>>
Happy Great BG-卡精度
查看>>
Xamarin Visual Studio不识别JDK路径
查看>>
菜鸟“抄程序”之道
查看>>
Ubuntu下关闭防火墙
查看>>
TCP/IP 邮件的原理
查看>>
原型设计工具
查看>>
windows下的C++ socket服务器(4)
查看>>
css3 2d转换3d转换以及动画的知识点汇总
查看>>
【Java】使用Eclipse进行远程调试,Linux下开启远程调试
查看>>
对Vue为什么不支持IE8的解释之一
查看>>
计算机改名导致数据库链接的诡异问题
查看>>
Java8内存模型—永久代(PermGen)和元空间(Metaspace)(转)
查看>>
ObjectiveC基础教程(第2版)
查看>>
centos 引导盘
查看>>
Notes of Daily Scrum Meeting(12.8)
查看>>
Apriori算法
查看>>
onlevelwasloaded的调用时机
查看>>
求出斐波那契数组
查看>>
lr_start_transaction/lr_end_transaction事物组合
查看>>