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 相关文章推荐
PHP webshell检查工具 python实现代码
Sep 15 Python
python获取各操作系统硬件信息的方法
Jun 03 Python
Python中的字符串操作和编码Unicode详解
Jan 18 Python
用pickle存储Python的原生对象方法
Apr 28 Python
Python实现脚本锁功能(同时只能执行一个脚本)
May 10 Python
Python闭包之返回函数的函数用法示例
Jan 27 Python
python 编写简单网页服务器的实例
Jun 01 Python
对Python发送带header的http请求方法详解
Jan 02 Python
Python中的元组介绍
Jan 28 Python
Python3实现定时任务的四种方式
Jun 03 Python
Python itertools.product方法代码实例
Mar 27 Python
如何在pycharm中安装第三方包
Oct 27 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中输出转义JavaScript代码的实现代码
2011/04/22 PHP
php实现批量压缩图片文件大小的脚本
2014/07/04 PHP
PHP获取文件相对路径的方法
2015/02/26 PHP
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
js实现文本框输入文字个数限制代码
2015/12/25 Javascript
Vue方法与事件处理器详解
2016/12/01 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
如何使用angularJs
2017/05/08 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
vue实现循环滚动列表
2020/06/30 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python3访问并下载网页内容的方法
2015/07/28 Python
python+matplotlib实现礼盒柱状图实例代码
2018/01/16 Python
详解python中递归函数
2019/04/16 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
利用CSS3实现动态的二级三级菜单效果实例源码
2017/01/04 HTML / CSS
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
公司人力资源的自我评价
2014/01/02 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
档案室主任岗位职责
2014/02/12 职场文书
新年晚会主持词
2014/03/24 职场文书
事业单位绩效考核实施方案
2014/03/27 职场文书
死亡诗社观后感
2015/06/05 职场文书
婚宴主持词
2015/06/30 职场文书
教育教学读书笔记
2015/07/02 职场文书