使用__iter__ , 和__reversed__ 实现正反向迭代器

Posted 安迪_963

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用__iter__ , 和__reversed__ 实现正反向迭代器相关的知识,希望对你有一定的参考价值。

内置的iter(), reversed()函数可以进行正反向迭代,如果需要定制正反向迭代,要怎么做呢?

事实上iter函数是调用的__iter__方法, reversed,则是调用的__reversed__方法,那么只需要

重写这两个方法即可:

这里演示反向输出浮点列表:

#!/usr/bin/env python
#coding:utf-8
#@Author:Andy

# iter() 使用的是__iter__方法
# reversed() 使用的是__reversed__ 方法
# 所以如果要自己实现,只需要重新写该方法即可

# 反向迭代器:


class FloatRange:
	def __init__(self, start, end, step=1.0):
		self.start = start
		self.end = end
		self.step = step

	# 正向
	def __iter__(self):
		t = self.start
		while t < self.end:
			yield t
			t += self.step
	# 反向
	def __reversed__(self):
		t = self.end
		while t > self.start:
			yield t
			t -= self.step

[print(x) for x in reversed(FloatRange(1.0, 5.0, 0.5))]

 

 

以上是关于使用__iter__ , 和__reversed__ 实现正反向迭代器的主要内容,如果未能解决你的问题,请参考以下文章

迭代器和生成器

内建函数的重写

__getitem____iter____next__iter和next的使用方法介绍

Python __iter__ 和 for 循环

关于python鸭子类型和白鹅类型

笔记反向迭代