python圆形生成器_python中的生成器

本文详细介绍了Python中的生成器和迭代器概念,包括如何使用yield关键字创建生成器、利用next()函数逐个获取元素及通过iter()函数将可迭代对象转换为迭代器对象的过程。同时对比了生成器与普通列表在内存占用方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1) yield

生成器其实也是一个迭代器,可以进行迭代,注意的它只可以迭代一次,由于它的值并没有全部放进去内存中,而是在运行过程中生成值,故节约了内存空间。我们可以遍历这个生成器或者使用一个for循环。

下面举一个例子进行说明:

def func(n):

a = b = 1

for i in range(n):

yield a

a, b = b, a + b

for x in func(100):

print(x)

这样子消耗的内存远远比写一个列表进行存储数据占用的内存少,节约了开发的内存资源。

(2) next()函数

next()函数可以依次查看序列的下一个元素,如果查看的元素超出了序列的索引时,则引发StopIteration异常。

下面举个简单的例子说明一下:

def func():

for i in range(5):

yield i

n = func()

print(next(n))

print(next(n))

print(next(n))

print(next(n))

print(next(n))

#报错

print(next(n))

输出结果:

0

1

2

3

4

Traceback (most recent call last):

print(next(n))

StopIteration

(3) iter()函数

iter函数可以将一个可迭代对象转化成迭代器对象,那字符串举例子吧,s = 'pyhton' 如果直接next(s),肯定会报错,报错类型:TypeError: 'str' object is not an iterator。字面上的意思,字符串对象不是迭代器,这时我们需要将字符串转化为迭代器对象。

iter()函数的使用如下:

s = 'python'

s_iter = iter(s)

print(next(s_iter))

print(next(s_iter))

print(next(s_iter))

print(next(s_iter))

print(next(s_iter))

print(next(s_iter))

输出:

p

y

t

h

o

n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值