1. 程式人生 > >使用__iter__ , 和__reversed__ 實現正、反向叠代器

使用__iter__ , 和__reversed__ 實現正、反向叠代器

兩個 ever init 需要 clas highlight nbsp utf 實現

內置的iter(), reversed()函數可以進行正反向叠代,如果需要定制正反向叠代,要怎麽做呢?

事實上iter函數是調用的__iter__方法, reversed,則是調用的__reversed__方法,那麽只需要

重寫這兩個方法即可:

這裏演示反向輸出浮點列表:

#!/usr/bin/env python
#coding:utf-8
[email protected]: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__ 實現正、反向叠代器