本文实例为大家分享了python实现反向迭代的具体代码,供大家参考,具体内容如下
案例:
实现一个连续的浮点数发生器,FloatRange,根据给定范围(start, end) 和步进值,产生一些列的浮点数,例如:FloatRange(3,4,0.2),将产生下列序列:
正向:3.0 3.2 …… 4.0
反向:4.0 3.8 …… 3.0
如何实现?
方法1:列表翻转
#!/usr/bin/python3
l = [1, 2, 3, 4, 5, 6]
l.reverse()
for i in l:
print(i)
# 出现问题,改变了原列表,不可取
方法2:列表切片
#!/usr/bin/python3
l = [1, 2, 3, 4, 5, 6]
for i in l[::-1]:
print(i)
# 得到了和原列表等大的列表,某种程度上很浪费
方法3: __ reversed__方法
#!/usr/bin/python3
l = [1, 2, 3, 4, 5, 6]
for i in reversed(l):
print(i)
如何逻辑整理?
for循环正向迭代调用__iter__方法,反向迭代调用__reversed__方法,可以定义一个类,写上这些方法
#!/usr/bin/python3