Python reversed反转序列并生成可迭代对象


Posted in Python onOctober 22, 2020

英文文档:

reversed(seq)

Return a reverse iterator. seq must be an object which has a __reversed__() method or supports the sequence protocol (the __len__() method and the __getitem__() method with integer arguments starting at 0).

反转序列生成新的可迭代对象

说明:

1. 函数功能是反转一个序列对象,将其元素从后向前颠倒构建成一个新的迭代器。

>>> a = reversed(range(10)) # 传入range对象
>>> a # 类型变成迭代器
<range_iterator object at 0x035634E8>
>>> list(a)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> a = ['a','b','c','d']
>>> a
['a', 'b', 'c', 'd']
>>> reversed(a) # 传入列表对象
<list_reverseiterator object at 0x031874D0>
>>> b = reversed(a)
>>> b # 类型变成迭代器
<list_reverseiterator object at 0x037C4EB0>
>>> list(b)
['d', 'c', 'b', 'a']

2. 如果参数不是一个序列对象,则其必须定义一个__reversed__方法。

# 类型Student没有定义__reversed__方法
>>> class Student:
  def __init__(self,name,*args):
    self.name = name
    self.scores = []
    for value in args:
      self.scores.append(value)

      
>>> a = Student('Bob',78,85,93,96)
>>> reversed(a) # 实例不能反转
Traceback (most recent call last):
 File "<pyshell#37>", line 1, in <module>
  reversed(a)
TypeError: argument to reversed() must be a sequence
>>> type(a.scores) # 列表类型
<class 'list'>


# 重新定义类型,并为其定义__reversed__方法
>>> class Student:
  def __init__(self,name,*args):
    self.name = name
    self.scores = []
    for value in args:
      self.scores.append(value)
  def __reversed__(self):
    self.scores = reversed(self.scores)

    
>>> a = Student('Bob',78,85,93,96)
>>> a.scores # 列表类型
[78, 85, 93, 96]
>>> type(a.scores)
<class 'list'>

>>> reversed(a) # 实例变得可以反转
>>> a.scores # 反转后类型变成迭代器
<list_reverseiterator object at 0x0342F3B0>
>>> type(a.scores)
<class 'list_reverseiterator'>

>>> list(a.scores)
[96, 93, 85, 78]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现合并两个数组的方法
May 16 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
Python获取SQLite查询结果表列名的方法
Jun 21 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
May 25 Python
利用python脚本如何简化jar操作命令
Feb 24 Python
Django stark组件使用及原理详解
Aug 22 Python
PyCharm2019安装教程及其使用(图文教程)
Sep 29 Python
Python接口测试结果集实现封装比较
May 01 Python
Python文件操作模拟用户登陆代码实例
Jun 09 Python
Django restful framework生成API文档过程详解
Nov 12 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 Python
Python+OpenCV图像处理—— 色彩空间转换
Oct 22 #Python
Python类的继承super相关原理解析
Oct 22 #Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
Oct 22 #Python
Python基于内置函数type创建新类型
Oct 22 #Python
python使用ctypes库调用DLL动态链接库
Oct 22 #Python
Python通过len函数返回对象长度
Oct 22 #Python
python 还原梯度下降算法实现一维线性回归
Oct 22 #Python
You might like
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
PHP永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
jQuery EasyUI中DataGird动态生成列的方法
2016/04/05 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
基于jQuery实现中英文切换导航条效果
2016/09/18 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
js模拟支付宝密码输入框
2017/04/11 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
vue实现重置表单信息为空的方法
2018/09/29 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
vue.js 子组件无法获取父组件store值的解决方式
2019/11/08 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
Python切片用法实例教程
2014/09/08 Python
Python功能键的读取方法
2015/05/28 Python
python机器学习之决策树分类详解
2017/12/20 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
基于python实现高速视频传输程序
2019/05/05 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
挂职思想汇报
2013/12/31 职场文书
党员违纪检讨书
2014/02/18 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
安全保证书怎么写
2015/02/28 职场文书
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers
MySQL数据库 安全管理
2022/05/06 MySQL