生成器、迭代器

生成器:用来存放一系列数据的可以迭代的容器。生成器减少了内存占用。

当你在工作时,你需要生成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类型

原文地址:https://www.cnblogs.com/fansirs/p/13468745.html