问题11:如何进行反向迭代 & 如何实现反向迭代
2024-09-04 18:13:45
# 有关列表问题,参考:Python:列表list
案例:
需求:实现一个连续浮点数发生器FloatRange(和range类似),根据给定范围(start,end)和步进值(step),产生一系列连续的浮点数;
如迭代FlartRange(3.0, 4.0, 0.2)可产生序列:
正向:3.0 -> 3.2 -> 3.4 -> 3.6 -> 3.8 -> 4.0
反向:4.0 -> 3.8 -> 3.6 -> 3.4 -> 3.2 -> 3.0
class FloatRange:
def __init__(self, start, end, step = 0.1):
self.start = start
self.end = end
self.step = step def __reversed__(self):
t = self.end
while t >= self.start:
yield t
t -= self.step def __iter__(self):
t = self.start
while t <= self.end:
yield t
t += self.step # 此循环,实例化时自动调用__iter__()方法,而不是__reversed__()方法;
for x in FloatRange(1.0, 3.0, 0.5):
print(x) # 此循环,只有定义了__reversed__()方法后,才能直接使用reversed;
for x in reversed(FloatRange(1.0, 4.0, 0.5)):
print(x)
最新文章
- 百度MIP移动页面加速——不只是CDN
- Spring data jpa批量插入和更新
- Javascript 笔记与总结(2-12)联动菜单
- Infragistics UltraGrid的使用
- 开发设计模式(八)抽象工厂模式(Abstract Factory Pattern)
- javascript 定时器使用
- Linq 构造复杂Json 多表group by
- SQL Server中生成测试数据
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(三)代码测试
- RGB565的理解
- 02-C#(基础)基本的定义和说明
- 每周.NET前沿技术文章摘要(2017-05-17)
- Python之——CentOS 6.5安装Python2.7.14
- jQuery_parent() parents() closest()区别
- State management(状态管理)
- Learning WCF:Fault Handling
- Dynamic Signals and Slots
- linux-centos使用 wget命令获取jdk
- 【转】NHibernate对象以及状态说明
- Nginx负载均衡 ssl原理 生成ssl密钥对 Nginx配置ssl