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实现代理服务功能实例
Nov 15 Python
跟老齐学Python之重回函数
Oct 10 Python
python通过线程实现定时器timer的方法
Mar 16 Python
pandas DataFrame数据转为list的方法
Apr 11 Python
Python中的Django基本命令实例详解
Jul 15 Python
python中正则表达式与模式匹配
May 07 Python
python——全排列数的生成方式
Feb 26 Python
python手机号前7位归属地爬虫代码实例
Mar 31 Python
解决Opencv+Python cv2.imshow闪退问题
Apr 24 Python
JAVA SWT事件四种写法实例解析
Jun 05 Python
python自然语言处理之字典树知识总结
Apr 25 Python
Python的property属性详细讲解
Apr 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 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
用PHP解决的一个栈的面试题
2014/07/02 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
2019/10/11 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
Node.js服务器开启Gzip压缩教程
2017/08/11 Javascript
python选择排序算法的实现代码
2013/11/21 Python
推荐11个实用Python库
2015/01/23 Python
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
python实现八大排序算法(2)
2017/09/14 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
python+OpenCV实现图像拼接
2020/03/05 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
HTML5实现的震撼3D焦点图动画的示例代码
2019/09/26 HTML / CSS
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
统计岗位职责
2014/02/21 职场文书
财务会计自荐信范文
2014/02/21 职场文书
实习护士自荐信
2014/06/21 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
政审证明范文
2015/06/19 职场文书
Python基础之数据结构详解
2021/04/28 Python