Python高级语法:迭代器和生成器

本文介绍了Python中的迭代器和生成器,它们遵循迭代器协议,分别通过__iter__和__next__方法逐个访问元素。生成器作为特殊迭代器,通过yield实现按需生成,适用于处理大型数据和无限序列,提升程序效率。

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

在Python中,迭代器(iterator)和生成器(generator)是两个重要的概念,用于处理可迭代对象的元素。

迭代器是一个实现了迭代器协议(iterator protocol)的对象。迭代器协议要求对象包含一个特殊的__iter__()方法和一个__next__()方法。__iter__()方法返回迭代器对象自身,__next__()方法返回可迭代对象的下一个元素。如果没有更多的元素可供迭代,__next__()方法应该抛出StopIteration异常。通过迭代器,我们可以逐个访问可迭代对象的元素,而无需提前知道对象中元素的数量。例如,Python中的列表、字符串、字典、文件等都是可迭代对象,我们可以使用迭代器来遍历它们的元素。

my_list = [1, 2, 3]
my_iter = iter(my_list)  # 获取迭代器对象

print(next(my_iter))  # 输出:1
print(next(my_iter))  # 输出:2
print(next(my_iter))  # 输出:3
print(next(my_iter))  # 抛出StopIteration异常

生成器是一种特殊的迭代器。生成器可以通过函数来创建,使用yield关键字来定义每次迭代返回的值。生成器函数在被调用时不会立即执行,而是返回一个生成器对象。每次调用生成器对象的__next__()方法时,生成器函数会从上次暂停的地方继续执行,直到遇到下一个yield语句或函数结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值