生成器:用来存放一系列数据的可以迭代的容器。生成器减少了内存占用。
当你在工作时,你需要生成1-10000的数据,而只用到了前100个数,为了减少内存开销,你可以使用生成器
生成器的标志是yield,一个函数或方法中,有yield关键字时,你可以认定他就是一个生成器。
生成器通过next方法获取数据,内部执行效果类似于for ... in 。
生成器定义: #1: 函数定义 def gene(): 数据 yield 数据 def test(): for i in range(1, 10001): yield i #2:通过列表生成式,将列表生成式的[]改为() gene = (i for i in range(1, 10001))
取元素时通过next方法获取, 每次返回一个数据,并会记录下此时的位置,下次获取时会从当前位置继续向下获取。
gene.next() # 1 gene.next() # 2 gene.next() # 3
当next()方法弹出最后一个元素时,再次调用next()方法,会报错。
迭代器:迭代器的标志是iter()
关于判断一个函数或者方法是不是迭代器:
1:看有没有定义iter()方法
2:判断它是不是Iterator类型