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

迭代器

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

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

随后我们可以使用next来对迭代器对象进行迭代
Python高级用法:迭代器(iter)_第1张图片

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

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

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

Python高级用法:迭代器(iter)_第2张图片

如果需要创建自己的迭代器,我们需要先创建一个类,在类中需要包含__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)_第3张图片
Python高级用法:迭代器(iter)_第4张图片

可以看到完全一致的效果

你可能感兴趣的:(python高级用法,python,开发语言)