
[Python][迭代器和生成器]反向迭代
发布日期:2021-05-28 16:50:29
浏览次数:30
分类:精选文章
本文共 816 字,大约阅读时间需要 2 分钟。
反向迭代
常规方法
将可迭代对象转化为列表后,使用列表的reversed方法反向输出,是一种常用但有限的实现方式。
Python代码示例:
读取文件内容并倒置输出:
with open("somefile") as f:
for line in reversed(list(f)): print(line, end='')
这种方法的主要缺点在于需要将整个文件读入内存,占用大量内存资源。虽然简单易用,但在处理大规模文件或日志时可能造成性能问题。
高阶方法:自定义反向迭代器
通过在类中定义__reversed__()方法,能够自定义迭代器的反向行为,优化内存使用和性能。
Python代码示例:
定义一个自定义迭代器类
class Countdown: 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
创建反向迭代器实例并遍历
rCountdown = Countdown(10)
正常迭代输出:
for item in rCountdown: print(item)
反向迭代输出:
for item in reversed(rCountdown): print(item)
输出结果:
normal countdown10987654321reversed countdown → countup12345678910
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年05月05日 00时35分28秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
什么是句柄(经典)
2019-03-15
本地navicat for MySQL远程连接阿里云的mysql
2019-03-15
第一次被黑
2019-03-15
PyCharm配置anaconda环境
2019-03-15
修改linux 系统自带日志系统systemd-journald && 参数
2019-03-15
Redis工具类
2019-03-15
Numi3 for Macmini文本计算器
2019-03-15
Long型转成Calendar,并获取年月日操作
2019-03-15
淘宝而已,随手就爬,保姆级教程带你装X带你飞!!!
2019-03-15
SpringBoot与缓存(JSR-107、Spring缓存抽象)
2019-03-15
微服务之Gateway实战讲解,小白必备哦!
2019-03-15
ERROR 总结
2019-03-15
Flutter ios打包 白屏问题
2019-03-15
数据结构与算法(C语言)——图的两种遍历(DFS和BFS)
2019-03-15
C语言—— 符号函数
2019-03-15
蓝桥杯Java 试题 E: 排序
2019-03-15
钞票最优解
2019-03-15
查找最小值栈的O(1)
2019-03-15
淘宝天猫双十一养猫组队怎么踢人
2019-03-15