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压缩文件夹内所有文件为zip文件的方法
Jun 20 Python
python 回调函数和回调方法的实现分析
Mar 23 Python
VSCode下配置python调试运行环境的方法
Apr 06 Python
python用post访问restful服务接口的方法
Dec 07 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
Jul 04 Python
ERLANG和PYTHON互通实现过程详解
Jul 05 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
Apr 22 Python
python实现文法左递归的消除方法
May 22 Python
Python selenium模块实现定位过程解析
Jul 09 Python
Python判断变量是否是None写法代码实例
Oct 09 Python
人工智能深度学习OpenAI baselines的使用方法
May 20 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 多维数组排序(usort,uasort)
2010/06/30 PHP
php中取得文件的后缀名?
2012/02/20 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
浅析vue-router原理
2018/10/19 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
[01:46]辉夜杯—打造中国DOTA新格局
2015/12/25 DOTA
[02:17]2016完美“圣”典风云人物:Sccc专访
2016/12/03 DOTA
[07:37]DOTA2-DPC中国联赛2月2日Recap集锦
2021/03/11 DOTA
python备份文件的脚本
2008/08/11 Python
python脚本实现查找webshell的方法
2014/07/31 Python
Django的数据模型访问多对多键值的方法
2015/07/21 Python
Python 自动化表单提交实例代码
2017/06/08 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
Python读取YUV文件,并显示的方法
2018/12/04 Python
简单了解django缓存方式及配置
2019/07/19 Python
django xadmin action兼容自定义model权限教程
2020/03/30 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
韩国著名的在线综合购物网站:Akmall
2016/08/07 全球购物
学前班教师的自我鉴定
2013/12/05 职场文书
经销商会议欢迎词
2014/01/11 职场文书
2014年政教处工作总结
2014/12/20 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL