需求:得到反方向迭代一个序列
解决:使用内置的 reversed() 函数
a = [1, 2, 3, 4]
for x in reversed(a):
print(x) # 4 3 2 1
反向迭代仅仅当对象的大小可预先确定或者对象实现了 __reversed__() 的特殊方法时才能生效。 如果两者都不符合,那你必须先将对象转换为一个列表才行
f = open('../../testData')
for line in reversed(list(f)):
print(line, end='')
但是 要注意的是如果可迭代对象元素很多的话,将其预先转换为一个列表要消耗大量的内存
解决方法 通过在自定义类上实现 __reversed__() 方法来实现反向迭代
class Countdawn:
def __init__(self,start):
self.start=start def __iter__(self):
n=self.start
while n>0:
yield n
n-=1 def __reversed__(self):
n=1
while n<= self.start:
yield n
n+=1 for r in reversed(Countdawn(5)):
print(r) # 1 2 3 4 5
for r in Countdawn(5):
print(r) # 5 4 3 2 1
												

最新文章

  1. iPhone开发与cocos2d 经验谈
  2. [Bug]枚举数组,并找到某些元素删除
  3. Qt开发中的实用笔记三--关于各种类的零碎知识点:
  4. windows 7 下找不到 Chart控件问题
  5. shell 和awk性能对比
  6. 二级菜单jquery
  7. oracle 删除表、表空间、用户时,如何释放磁盘空间
  8. SQLServer2008 行转列2
  9. Android wakelock机制
  10. 转载RabbitMQ入门(4)--路由
  11. bzoj 2437 [Noi2011]兔子和鸡蛋 [二分图匹配]
  12. whu oj 1551 Pairs (莫队算法)
  13. 【渗透笔记】拿下某小H网的全过程
  14. 为何webpack打包后的文件要放在服务器上才能运行
  15. h5 ios键盘卡死页面
  16. Tomcat 用 startup.bat 启动时,加载信息之后又关闭服务器(差不多一闪而过)问题
  17. python -- conda pytorch
  18. Python中 and or 运算顺序详解 --- 短路逻辑
  19. 神经网络出现nan原因?以及解决
  20. KO ------- 表中字段名和实体类属性名不一致

热门文章

  1. python面向对象--类的内置方法
  2. 05XML
  3. opencv windows源码编译
  4. python笔记(2)---不定长参数
  5. 编译原理--NFA/DFA
  6. Intent.java分析
  7. 15:解决IntelliJ IDEA的乱码问题
  8. mybatisplus中使用SqlRunner出错
  9. mysql 1067 - Invalid default value for &#39;addtime&#39;错误处理
  10. 【HDOJ6662】Acesrc and Travel(树形DP,换根)