python generator下标_关于python3中的生成器的介绍与理解

本文介绍了Python生成器的用途、应用场景及其创建方式。生成器在处理大量数据时节省内存,常用于异步操作。通过示例展示了如何创建和遍历生成器,强调了生成器的不可重复性。此外,还探讨了生成器函数,包括yield关键字的作用,以及send()和throw()方法的使用。
摘要由CSDN通过智能技术生成

首先说明一下,第一次写博客,难免会有纰漏,如果有不足的地方希望大家指正,谢谢

生成器都有什么用处

生成器可以用来存放一些数据,像列表元组那样,在生成器的高端用法里被用作协程(py3.4以前),可以用来实现一些异步操作。

哪些人会用到生成器,在什么场景下来用呢

在你有很多很多数据要存放在一个容器中时,但你并不着急需要用这些数据(也就是说这些数据可能会占用你的大部分内存),那么你很可能需要用到生成器。

或者当你在编写异步IO的项目时,你几乎逃不掉的要学习生成器,还有很多场景下都会用到生成器

那么如何来创建一个简单的生成器呢

很简单,就像一个列表推导式那样

lst = [i for i in range(5)] # 这样就快速创建了一个列表

生成器类似

gen = (i for i in range(5)) # 同样我们创建了一个生成器,这个生成器是一个可迭代对象

print(type(gen)) #

生成器的特性:

生成器可以认为是一个存放数据的集合,而且他是一个一次性的容器

当然这很简单,但是不要简单的认为,这就像快速生成了一个元组,千万不要这么认为,

因为这根本就不是一个元组。

我们将所要保存的数据0,1,2,3,4保存在了这个生成器中

那么当我们需要用到这些数据的时候,我们怎么将它们取出呢?我们不能在像以前的方式

通过下标来取出里边的值,那样是毫无结果的。

上文说过,生成器是一个可迭代对象,那么我们就可以用for..in结构,来一个一个的取出里边的元素,如:

for one in gen: # 遍历这个生成器,并将返回值打印出来

print(one)

0

1

2

3

4

当然这种做法也是很安全的,除此之外还有一种方法next(),

newgen = (i for i in range(2))

print(next(newgen)) # 0 注意需要重新在创建一个新的生成器,

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值