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安装Numpy和matplotlib的方法(推荐)
Nov 02 Python
Python 实现一行输入多个值的方法
Apr 21 Python
Python之批量创建文件的实例讲解
May 10 Python
pyqt5的QComboBox 使用模板的具体方法
Sep 06 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
Mar 27 Python
python将excel转换为csv的代码方法总结
Jul 03 Python
对python中 math模块下 atan 和 atan2的区别详解
Jan 17 Python
Python pip安装模块提示错误解决方案
May 22 Python
python安装和pycharm环境搭建设置方法
May 27 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
运行python提示no module named sklearn的解决方法
Nov 29 Python
python脚本框架webpy的url映射详解
Nov 20 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
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
php+oracle 分页类
2006/10/09 PHP
php数组使用规则分析
2015/02/27 PHP
使用新浪微博API的OAuth认证发布微博实例
2015/03/27 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
yii2缓存Caching基本用法示例
2016/07/18 PHP
PHP中STDCLASS用法实例分析
2016/11/11 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
JSON 编辑器实现代码
2009/12/06 Javascript
Javascript的闭包
2009/12/31 Javascript
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
2016/05/26 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
JS实现放烟花效果
2020/03/10 Javascript
python抓取网页图片示例(python爬虫)
2014/04/27 Python
Python随机读取文件实现实例
2017/05/25 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
QML实现钟表效果
2020/06/02 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
使用python实现名片管理系统
2020/06/18 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
学校食堂食品安全责任书
2014/07/28 职场文书
解除劳动合同协议书(样本)
2014/10/02 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
爱心捐书倡议书
2015/04/27 职场文书
python flappy bird小游戏分步实现流程
2022/02/15 Python