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中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
一个基于flask的web应用诞生(1)
Apr 11 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
Jan 29 Python
python3+PyQt5实现自定义流体混合窗口部件
Apr 24 Python
Python基于dom操作xml数据的方法示例
May 12 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
May 26 Python
解决python opencv无法显示图片的问题
Oct 28 Python
python里运用私有属性和方法总结
Jul 08 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
Python操作Sonqube API获取检测结果并打印过程解析
Nov 27 Python
pycharm不能运行.py文件的解决方法
Feb 12 Python
解决hive中导入text文件遇到的坑
Apr 07 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
PHP开发文件系统实例讲解
2006/10/09 PHP
PHP+XML 制作简单的留言本 图文教程
2009/11/02 PHP
php入门之连接mysql数据库的一个类
2012/04/21 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
50个PHP程序性能优化的方法
2014/06/02 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
2015/11/05 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
2014/10/22 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
Python计算回文数的方法
2015/03/11 Python
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
2019/06/04 Python
利用Python计算KS的实例详解
2020/03/03 Python
Python常用类型转换实现代码实例
2020/07/28 Python
详解使用CSS3的@media来编写响应式的页面
2017/11/01 HTML / CSS
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
自我鉴定怎么写
2013/12/05 职场文书
财产公证书
2014/04/10 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
公安纪律作风整顿剖析材料
2014/10/10 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
行政助理岗位职责
2015/02/10 职场文书
初中重阳节活动总结
2015/05/05 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
Spring Boot mybatis-config 和 log4j 输出sql 日志的方式
2021/07/26 Java/Android