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 24 Python
python 动态加载的实现方法
Dec 22 Python
Python实现的NN神经网络算法完整示例
Jun 19 Python
Python global全局变量函数详解
Sep 18 Python
python xpath获取页面注释的方法
Jan 14 Python
详解如何管理多个Python版本和虚拟环境
May 10 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
python:目标检测模型预测准确度计算方式(基于IoU)
Jan 18 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
matplotlib交互式数据光标实现(mplcursors)
Jan 13 Python
只需要这一行代码就能让python计算速度提高十倍
May 24 Python
Pytorch 如何实现常用正则化
May 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
在字符串中把网址改成超级链接
2006/10/09 PHP
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
thinkPHP3.2简单实现文件上传的方法
2016/05/16 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
ThinkPHP中create()方法自动验证表单信息
2017/04/28 PHP
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
JQuery获取各种宽度、高度(format函数)实例
2013/03/04 Javascript
js获取上传文件大小示例代码
2014/04/10 Javascript
在Ubuntu上安装最新版本的Node.js
2014/07/14 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
js模拟微博发布消息
2017/02/23 Javascript
vue之数据交互实例代码
2017/06/20 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
JQuery 又谈ajax局部刷新
2017/11/27 jQuery
使用node.js实现微信小程序实时聊天功能
2018/08/13 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
浅谈JavaScript闭包
2019/04/09 Javascript
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
python文件比较示例分享
2014/01/10 Python
python django model联合主键的例子
2019/08/06 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
美国休闲服装品牌:Express
2016/09/24 全球购物
如何强制垃圾回收
2015/10/06 面试题
城市轨道专业个人求职信范文
2013/09/23 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python