# 有关列表问题,参考: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)

最新文章

  1. 百度MIP移动页面加速——不只是CDN
  2. Spring data jpa批量插入和更新
  3. Javascript 笔记与总结(2-12)联动菜单
  4. Infragistics UltraGrid的使用
  5. 开发设计模式(八)抽象工厂模式(Abstract Factory Pattern)
  6. javascript 定时器使用
  7. Linq 构造复杂Json 多表group by
  8. SQL Server中生成测试数据
  9. Spring+SpringMVC+MyBatis+easyUI整合优化篇(三)代码测试
  10. RGB565的理解
  11. 02-C#(基础)基本的定义和说明
  12. 每周.NET前沿技术文章摘要(2017-05-17)
  13. Python之——CentOS 6.5安装Python2.7.14
  14. jQuery_parent() parents() closest()区别
  15. State management(状态管理)
  16. Learning WCF:Fault Handling
  17. Dynamic Signals and Slots
  18. linux-centos使用 wget命令获取jdk
  19. 【转】NHibernate对象以及状态说明
  20. Nginx负载均衡 ssl原理 生成ssl密钥对 Nginx配置ssl

热门文章

  1. strstr使用
  2. HDU - 5703 Desert 【找规律】
  3. 解决pod没有权限问题
  4. Mysql——JDBC编程 理论介绍
  5. var妙用
  6. BOM之history
  7. 高通8X16电池BMS算法(二)【转】
  8. hadoop集群增加新节点
  9. Spring中如何动态注入Bean实例教程
  10. JavaScript秘密