Python高级用法:迭代器(iter)

本文详细解释了迭代器的概念,介绍了如何通过内置函数和序列创建迭代器,以及如何自定义迭代器实现__next__和__iter__方法。文章还展示了如何在Python中使用迭代器与循环配合工作,包括处理StopIteration错误。
摘要由CSDN通过智能技术生成

迭代器

迭代器是一个实现了迭代器协议的容器对象。它基于以下两个方法。
__ next __:返回容器的下一个元素。
__ iter __:返回迭代器本身
迭代器可以利用内置的iter函数和一个序列来创建, 假设我们的序列为[1, 2, 3],迭代器创建过程如下:

i = iter([1, 2, 3])

随后我们可以使用next来对迭代器对象进行迭代
在这里插入图片描述

但如果序列元素已经被遍历完了,再使用next,就会引发报错
在这里插入图片描述

但这一停止方式是与循环语句适配的,所以可以和循环语句搭配使用

for x in iter([1, 2, 3]):
	print(x)

在这里插入图片描述

如果需要创建自己的迭代器,我们需要先创建一个类,在类中需要包含__next__方法和__iter__方法。同时在__next__方法中约定终止条件,终止时需要抛出StopIteration错误。在__iter__方法中需要返回self
下面我们仿照内置iter的形式来创建自己的迭代器

class MyIter():
	def __init__(self, lst):
		self.lst = lst
		self.idx = 0
		self.len = len(lst)
	def __next__(self):
		if self.idx >= self.len:
			raise StopIteration
		self.idx += 1
		return self.lst[self.idx-1]
	def __iter__(self):
		return self

最后我们测试一下

for x in MyIter(["a", "b", "c"]):
	print(x)

在这里插入图片描述
在这里插入图片描述

可以看到完全一致的效果

视频讲解

Python高级用法:迭代器(iter)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾醒(AiXing-w)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值