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获取央视节目单的实现代码
Jul 25 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
Jan 24 Python
在python中实现对list求和及求积
Nov 14 Python
Python中如何导入类示例详解
Apr 17 Python
django 微信网页授权认证api的步骤详解
Jul 30 Python
Python定时任务随机时间执行的实现方法
Aug 14 Python
python opencv实现gif图片分解的示例代码
Dec 13 Python
解决Python logging模块无法正常输出日志的问题
Feb 21 Python
Python unittest 自动识别并执行测试用例方式
Mar 09 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
Jul 31 Python
Python单元测试及unittest框架用法实例解析
Jul 09 Python
Python之基础函数案例详解
Aug 30 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/06/29 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
javascript 浏览器检测代码精简版
2010/03/04 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
jquery实现下拉框多选方法介绍
2017/01/03 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
Vue父子之间值传递的实例教程
2020/07/02 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
python简单程序读取串口信息的方法
2015/03/13 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
Python画图高斯分布的示例
2019/07/10 Python
python多线程扫描端口(线程池)
2019/09/04 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
windows下python安装pip方法详解
2020/02/10 Python
Python抓包程序mitmproxy安装和使用过程图解
2020/03/02 Python
python 常见的排序算法实现汇总
2020/08/21 Python
python 实现全球IP归属地查询工具
2020/12/18 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
2021/01/08 Python
2019史上最全Database工程师题库
2015/12/06 面试题
应用艺术专业个人的自我评价
2014/01/03 职场文书
报告会主持词
2014/04/02 职场文书
合同和协议有什么区别?
2014/10/08 职场文书