python-8-如何進行反向迭代以及如何實現反向迭代?
阿新 • • 發佈:2019-02-09
l = [1,2,3,4,5]
l.reverse()
print(l)
reverse()對列表的元素進行反向排序。
改變了原列表,從某種情形是不允許的
l = [1,2,3,4,5]
print(l[::-1])
切片返回的陣列和原陣列同樣大小,浪費資源。
推薦使用自帶函式reversed(l),其將得到列表的反向迭代器,reversed實際上呼叫的是reversed方法
PS:iter(l)得到的是正向迭代器,iter實際上呼叫的是iter方法
class FloatRange():
def __init__(self,start,end,step=0.1 ):
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
for x in FloatRange(1.0,4.0,0.5):
print(x)
for x in reversed(FloatRange(1.0,4.0,0.5)):
print(x)