[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
上一篇:[Python][迭代器和生成器] 带有额外状态的生成器函数
下一篇:[Python][迭代器和生成器] 迭代协议

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年05月05日 00时35分28秒