Python学习笔记(九)

                                               生成器

 

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函数,实现生成器功能

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值