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实现划词翻译
Apr 23 Python
python使用MySQLdb访问mysql数据库的方法
Aug 03 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
Dec 19 Python
python utc datetime转换为时间戳的方法
Jan 15 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
May 10 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
django 做 migrate 时 表已存在的处理方法
Aug 31 Python
python读写Excel表格的实例代码(简单实用)
Dec 19 Python
将keras的h5模型转换为tensorflow的pb模型操作
May 25 Python
python中round函数保留两位小数的方法
Dec 04 Python
python 实现德洛内三角剖分的操作
Apr 22 Python
Django利用AJAX技术实现博文实时搜索
May 06 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原理的opcodes(操作码)
2010/10/26 PHP
PHP中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
PHP输出日历表代码实例
2015/03/27 PHP
laravel Validator ajax返回错误信息的方法
2019/09/29 PHP
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
jQuery 页面 Mask实现代码
2010/01/09 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
Python数据结构之栈、队列的实现代码分享
2017/12/04 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
求职简历自我评价范例
2014/03/12 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
公司离职证明标准范本
2014/10/05 职场文书
年度考核登记表个人总结
2015/03/06 职场文书
裁员通知
2015/04/25 职场文书
详解Nginx 工作原理
2021/03/31 Servers
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
Oracle 多表查询基本语法实例
2022/04/18 Oracle