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