生成器
1、迭代器
。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
。迭代器有两个基本的方法:iter()和next()。
2、生成器
。在python中,使用了yield的函数被称为生成器(generator)。
。在调用生成器运行的过程中,每次遇到yield时函数会暂停并保存当前所有的运行信息,返回yield的值,并在下一次执行next()方法时从当前位置继续运行。
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。
在Python中,这种一边循环一边计算的机制,称为生成器generator。
经常我们生成的生成器不会使用next(),而是直接使用for循环遍历,而生成器的写法也就是将函数的return变成yield,我们后面的AI学习中可能遇到很大的数据量,因此生成器是我们必不可少的工具
#类似
def get_batch(dataset,batch_size):
...
...
...
...
yield XXXX
batch=get_batch(dataset,6)
print(next(batch))
print(next(batch))
print(next(batch))
print(next(batch))
dataset是数据列表
batch_size是我们每次需要的列表的长度
写一个get_batch函数,实现生成器功能