python 3-4 如何进行反向迭代以及如何实现反向迭代 reversed yield
正向迭代器 和 逆向迭代器
l = [1,2,3,4]
>>> iter(l)
<listiterator object at 0xb7ec37cc>
>>> reversed(l)
<listreverseiterator object at 0xb7ec37ec>
l=[1,2,3,4,5]
l.reverse() 将初始的列表反向了
l[::-1] 输出反向的列表,这样会带来新的列表空间
l=[1,2,3,4,5]
for x in reversed(l):
print x
实现浮点数正反序列
FloatRange 是一个Iterable,然后可以通过for循环遍历
class FloatRange(object):
def __init__(self,start,end,distance=0.1):
self.start = start
self.end = end
self.distance = distance
def __iter__(self):
while self.start <=self.end:
yield self.start
self.start += self.distance
def __reversed__(self):
while self.end >=self.start:
yield self.end
self.end -= self.distance
for x in FloatRange(1.0,4.0,0.1):
print x,
print
for xx in reversed(FloatRange(1.0,4.0,0.1)):
print xx,
--------------------------------------------------------------------------------
1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9
2.0 1.9 1.8 1.7 1.6 1.5 1.4 1.3 1.2 1.1