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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值