Python 迭代器 -- iterator

– Start

什么是迭代器?

迭代器其实是一个规范,实现了这个规范的类就可以在 for 循环中使用,如我们之前学的列表,元组等。

自定义迭代器

下面的例子定义了一个随机迭代器。

import random

class MyContainer:
	def __init__(self, *elements):
		self._elements = list(elements)

	# 自定义迭代器需要实现 __iter__ 方法来返回 iterator 对象
	def __iter__(self):
		random.shuffle(self._elements)
		self._cursor = 0
		return self

	# 自定义迭代器需要实现 __next__ 方法来提供下一个元素
	def __next__(self):
		if self._cursor >= len(self._elements):
			# 迭代完后抛出 StopIteration 异常
			raise StopIteration()
			
		e = self._elements[self._cursor]
		self._cursor += 1
		return e


# 实例化 MyContainer
mc = MyContainer(1, 2, 3)


# 测试
i = iter(mc)   # 使用 iter 构造迭代器
print(next(i)) # 使用 next 获取下一个元素
print(next(i))
print(next(i))
#print(next(i))


# 使用 for 循环
for e in mc:
	print(e)

通常我们不需要自定义迭代器,但是迭代器是函数式编程的基础,非常重要。

– 更多参见:Python 精萃
– 声 明:转载请注明出处
– Last Updated on 2018-09-29
– Written by ShangBo on 2018-09-29
– End

猜你喜欢

转载自blog.csdn.net/shangboerds/article/details/82901348