博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python之反向迭代
阅读量:4619 次
发布时间:2019-06-09

本文共 767 字,大约阅读时间需要 2 分钟。

需求:得到反方向迭代一个序列 解决:使用内置的 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+=1for r in reversed(Countdawn(5)):    print(r)  # 1 2 3 4 5for r in Countdawn(5):    print(r)   # 5 4 3 2 1
 

转载于:https://www.cnblogs.com/zzy-9318/p/10491241.html

你可能感兴趣的文章
numpy.random.shuffle()与numpy.random.permutation()的区别
查看>>
asp:UpdatePanel中js失效问题已解决
查看>>
Vue项目创建build后可修改的配置文件
查看>>
webRTC中音频相关的netEQ(四):控制命令决策
查看>>
es6代理 proxy 学习
查看>>
Spring视频学习笔记(1)IoC容器
查看>>
如果一个div的宽度用百分比表示,怎样让这个div的高度=宽度
查看>>
解析PHP正则表达式修饰符
查看>>
python之mysqldb模块安装
查看>>
28 startActivityForResult和setResult详解
查看>>
调用Newtonsoft.Json 报FileNotFoundException 错误
查看>>
JS网页打印设置技巧
查看>>
ActiveMQ 配置
查看>>
python-openpyxl操作excel
查看>>
ES6的新特性(6)——正则的扩展
查看>>
全文检索基本原理
查看>>
数组中轴
查看>>
非常实用的使用eclipse的快捷键和技巧
查看>>
AppServ的使用
查看>>
Windows Forms编程实战笔记(一至四章)
查看>>