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 getopt模块处理命令行选项实例
May 13 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
Python+matplotlib绘制不同大小和颜色散点图实例
Jan 19 Python
python3 实现一行输入,空格隔开的示例
Nov 14 Python
python网络应用开发知识点浅析
May 28 Python
Python通过递归获取目录下指定文件代码实例
Nov 07 Python
python opencv 实现对图像边缘扩充
Jan 19 Python
Python读取VOC中的xml目标框实例
Mar 10 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
通过Python扫描代码关键字并进行预警的实现方法
May 24 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
Aug 11 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
Mar 23 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
微信支付开发交易通知实例
2016/07/12 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
php引用和拷贝的区别知识点总结
2019/09/23 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
Javascript 篱式条件判断
2008/08/22 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
2016/02/18 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
react-native 封装选择弹出框示例(试用ios&amp;android)
2017/07/11 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
vue实现将一个数组内的相同数据进行合并
2019/11/07 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
js实现微信聊天界面
2020/08/09 Javascript
[55:45]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第一局
2016/02/28 DOTA
Python使用py2exe打包程序介绍
2014/11/20 Python
python中的装饰器详解
2015/04/13 Python
在Python程序中实现分布式进程的教程
2015/04/28 Python
Python 数据结构之旋转链表
2017/02/25 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
Python学习之time模块的基本使用
2021/01/17 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
教师师德教育的自我评价
2013/10/31 职场文书
宠物店的创业计划书范文
2014/01/11 职场文书
高中物理教学反思
2014/02/08 职场文书
留学推荐信怎么写
2015/03/26 职场文书
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server