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 实现堆排序算法代码
Jun 05 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
May 06 Python
python安装mysql-python简明笔记(ubuntu环境)
Jun 25 Python
Python入门_浅谈for循环、while循环
May 16 Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 Python
python for循环输入一个矩阵的实例
Nov 14 Python
python 实现12bit灰度图像映射到8bit显示的方法
Jul 08 Python
pytorch 可视化feature map的示例代码
Aug 20 Python
Python IDLE或shell中切换路径的操作
Mar 09 Python
python实现暗通道去雾算法的示例
Sep 27 Python
python 调用API接口 获取和解析 Json数据
Sep 28 Python
python 决策树算法的实现
Oct 09 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支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
解析thinkphp的左右值无限分类
2013/06/20 PHP
php验证手机号码
2015/11/11 PHP
详解WordPress中给链接添加查询字符串的方法
2015/12/18 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
纯javascript实现选择框的全选与反选功能
2019/04/08 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
2019/05/21 Javascript
vue路由插件之vue-route
2019/06/13 Javascript
element-ui中按需引入的实现
2019/12/25 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
2020/02/15 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
使用python实现时间序列白噪声检验方式
2020/06/03 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
创业者是否需要商业计划书?
2014/02/07 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
安全生产年活动总结
2014/08/29 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python