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 相关文章推荐
pymssql ntext字段调用问题解决方法
Dec 17 Python
Python中查看文件名和文件路径
Mar 31 Python
Anaconda多环境多版本python配置操作方法
Sep 12 Python
Python进阶之递归函数的用法及其示例
Jan 31 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
Oct 29 Python
Python批量修改图片分辨率的实例代码
Jul 04 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
Oct 09 Python
python分布式编程实现过程解析
Nov 08 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
Jul 09 Python
python实现取余操作的简单实例
Aug 16 Python
python编写函数注意事项总结
Mar 29 Python
python办公自动化之excel的操作
May 23 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速成大法
2015/01/30 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
PHP仿微信发红包领红包效果
2016/10/30 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
Python3字符串学习教程
2015/08/20 Python
Python实现多并发访问网站功能示例
2017/06/19 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
python判断是空的实例分享
2020/07/06 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
免税水晶:Duty Free Crystal
2019/05/13 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
大学生职业规划前言模板
2013/12/27 职场文书
秋天的图画教学反思
2014/05/01 职场文书
地震慰问信
2015/02/14 职场文书
2015年党日活动总结范文
2015/03/25 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
LayUI+Shiro实现动态菜单并记住菜单收展的示例
2021/05/06 Javascript
Python移位密码、仿射变换解密实例代码
2021/06/27 Python
Oracle以逗号分隔的字符串拆分为多行数据实例详解
2021/07/16 Oracle
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫