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之关于循环的小伎俩
Oct 02 Python
定制FileField中的上传文件名称实例
Aug 23 Python
Python中序列的修改、散列与切片详解
Aug 27 Python
wxpython实现图书管理系统
Mar 12 Python
pandas.DataFrame 根据条件新建列并赋值的方法
Apr 08 Python
利用pandas读取中文数据集的方法
Jul 25 Python
浅谈django rest jwt vue 跨域问题
Oct 26 Python
python防止随意修改类属性的实现方法
Aug 21 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
Python 如何在字符串中插入变量
Aug 01 Python
python使用PySimpleGUI设置进度条及控件使用
Jun 10 Python
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 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
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
PHP学习笔记之二 php入门知识
2011/01/12 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
php连接oracle数据库的方法(测试成功)
2016/05/26 PHP
php实现的生成排列算法示例
2019/07/25 PHP
jQuery 使用手册(五)
2009/09/23 Javascript
通过隐藏option实现select的联动效果
2009/11/10 Javascript
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
jquery分页插件jquery.pagination.js使用方法解析
2016/04/01 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
详解webpack 多页面/入口支持&amp;公共组件单独打包
2017/06/29 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
Python实现抓取城市的PM2.5浓度和排名
2015/03/19 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
幼儿园美术教学反思
2014/01/31 职场文书
《三峡》教学反思
2014/03/01 职场文书
教师节演讲稿
2014/05/06 职场文书
员工辞职信范文大全
2015/05/12 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
CPU不支持Windows11系统怎么办
2021/11/21 数码科技