码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-06-11 13:42:55      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:blog   技术分享   pre   pytho   odi   sed   usr   调用   init   

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

标签:blog   技术分享   pre   pytho   odi   sed   usr   调用   init   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!