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 yield机制的异步操作同步化编程模型
Mar 18 Python
Python实现识别图片内容的方法分析
Jul 11 Python
Python的条件表达式和lambda表达式实例
Jan 31 Python
python中yield的用法详解——最简单,最清晰的解释
Apr 04 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
May 07 Python
python的内存管理和垃圾回收机制详解
May 18 Python
Python计算一个点到所有点的欧式距离实现方法
Jul 04 Python
基于python操作ES实例详解
Nov 16 Python
关于windows下Tensorflow和pytorch安装教程
Feb 04 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
python 判断一组数据是否符合正态分布
Sep 23 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 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/03/06 PHP
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
详解ES6中的let命令
2020/04/05 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
vue v-model动态生成详解
2018/06/30 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
JS实现可切换图片的幻灯切换效果示例
2019/05/24 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
python使用post提交数据到远程url的方法
2015/04/29 Python
python分块读取大数据,避免内存不足的方法
2018/12/10 Python
在django中,关于session的通用设置方法
2019/08/06 Python
Python PO设计模式的具体使用
2019/08/16 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
css3实现超立体3D图片侧翻倾斜效果
2014/04/16 HTML / CSS
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
银行出纳岗位职责
2013/11/25 职场文书
会计系毕业生求职信
2014/05/28 职场文书
上党课的心得体会
2014/09/02 职场文书
会计简历自我评价
2015/03/10 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
员工手册编写范本
2015/05/14 职场文书
钱学森电影观后感
2015/06/04 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL
python flappy bird小游戏分步实现流程
2022/02/15 Python