首页 > 其他 > 详细

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

时间:2017-06-11 13:27:58      阅读:294      评论:0      收藏:0      [点我收藏+]

内置的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__ 实现正、反向迭代器

原文:http://www.cnblogs.com/Andy963/p/6984934.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!