Python内置函数reversed()用法分析


Posted in Python onMarch 20, 2018

本文实例讲述了Python内置函数reversed()用法。分享给大家供大家参考,具体如下:

reversed()函数是返回序列seq的反向访问的迭代器。参数可以是列表,元组,字符串,不改变原对象。

1》参数是列表

>>> l=[1,2,3,4,5]
>>> ll=reversed(l)
>>> l
[1, 2, 3, 4, 5]
>>> ll
<listreverseiterator object at 0x06A9E930>
>>> for i in ll:#第一次遍历
...  print i,
... 
5 4 3 2 1
>>> for i in ll:第二次遍历为空,原因见本文最后
...  print i
...

2》参数是列表

>>> l=[3,4,5,6]
>>> ll=reversed(l)
>>> l
[3, 4, 5, 6]
>>> ll
<listreverseiterator object at 0x06A07E10>
>>> list(ll)#第一次
[6, 5, 4, 3]
>>> list(ll)#第二次为空,原因见本文最后
[]

3》参数是元组

>>> t=(4,5,6)
>>> tt=reversed(t)
>>> t
(4, 5, 6)
>>> tt
<reversed object at 0x06A07E50>
>>> tuple(tt)#第一次
(6, 5, 4)
>>> tuple(tt)#第二次为空,原因见本文最后
()

4》参数是字符串

>>> s='cba'
>>> ss=reversed(s)
>>> s
'cba'
>>> ss
<reversed object at 0x06A07E70>
>>> list(ss)#第一次
['a', 'b', 'c']
>>> list(ss)#第二次为空,原因见本文最后
[]

5》参数是字符串

>>> s='1234'
>>> ss=reversed(s)
>>> s
'1234'
>>> ss
<reversed object at 0x06A94490>
>>> ''.join(ss)#第一次
'4321'
>>> ''.join(ss)#第二次为空,原因见本文最后
''

为什么reversed()之后,第二次for循环或第二次list()或第二次tuple()或第二次join()得到的结果为空?我们以第2个例子具体说明一下:

That's because reversed creates an iterator, which is already spent when you're calling list(ll) for the second time.

The reason is that ll is not the reversed list itself, but a listreverseiterator. So when you call list(ll) the first time, it iterates over ll and creates a new list from the items output from that iterator.When you do it a second time, ll is still the original iterator and has already gone through all the items, so it doesn't iterate over anything, resulting in an empty list.

小编来翻译一下:

这是因为反向创建了一个迭代器,该迭代器在第二次调用列表(LL)时已经使用过了。

其原因就是ll不是反转列表本身,而是一个列表反向迭代器。所以当你第一次调用列表(ll),它会遍历ll并且创建一个新的列表从项目输出迭代器。当你再进行一次,ll仍然是原来的迭代器,已经经历了所有的项目,所以它不会再遍历什么,这就造成了空列表。

总结:reversed()之后,只在第一次遍历时返回值。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python 安装virtualenv和virtualenvwrapper的方法
Jan 13 Python
Python模拟登陆实现代码
Jun 14 Python
Python实现购物程序思路及代码
Jul 24 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
pycharm中使用anaconda部署python环境的方法步骤
Dec 19 Python
Win10系统下安装labelme及json文件批量转化方法
Jul 30 Python
Python自动化导出zabbix数据并发邮件脚本
Aug 16 Python
详解Python中pyautogui库的最全使用方法
Apr 01 Python
简单了解Java Netty Reactor三种线程模型
Apr 26 Python
keras实现多GPU或指定GPU的使用介绍
Jun 17 Python
Python字符串及文本模式方法详解
Sep 10 Python
Python 实现进度条的六种方式
Jan 06 Python
shell命令行,一键创建 python 模板文件脚本方法
Mar 20 #Python
python如何拆分含有多种分隔符的字符串
Mar 20 #Python
Python中str.join()简单用法示例
Mar 20 #Python
单利模式及python实现方式详解
Mar 20 #Python
python如何去除字符串中不想要的字符
Jul 05 #Python
python删除某个字符
Mar 19 #Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 #Python
You might like
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
php中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
PDO操作MySQL的基础教程(推荐)
2017/08/18 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
jQuery $.each的用法说明
2010/03/22 Javascript
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
JS实现页面打印(整体、局部)
2017/08/18 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
2018/02/18 Python
django允许外部访问的实例讲解
2018/05/14 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
2018/05/24 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
python中如何使用虚拟环境
2020/10/14 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
质检员的岗位职责
2013/11/15 职场文书
小型女装店的创业计划书
2014/01/09 职场文书
简历上的自我评价
2014/02/03 职场文书
高中校园广播稿
2014/10/21 职场文书
python自动化测试通过日志3分钟定位bug
2021/11/20 Python
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android
GPU服务器的多用户配置方法
2022/07/07 Servers