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实现的可以拷贝或剪切一个文件列表中的所有文件
Apr 30 Python
详解Golang 与python中的字符串反转
Jul 21 Python
基于Django模板中的数字自增(详解)
Sep 05 Python
Python实现的寻找前5个默尼森数算法示例
Mar 25 Python
python list删除元素时要注意的坑点分享
Apr 18 Python
python获取文件真实链接的方法,针对于302返回码
May 14 Python
python实现两个dict合并与计算操作示例
Jul 01 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
Python中一个for循环循环多个变量的示例
Jul 16 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
Python如何自动获取目标网站最新通知
Jun 18 Python
Python使用pickle进行序列化和反序列化的示例代码
Sep 22 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 MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
php中++i 与 i++ 的区别
2012/08/08 PHP
php中的mongodb select常用操作代码示例
2014/09/06 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
JavaScript 模拟用户单击事件
2009/12/31 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
js实现文本上下来回滚动
2017/02/03 Javascript
JavaScript中 this 指向问题深度解析
2017/02/21 Javascript
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
Python脚本实现代码行数统计代码分享
2015/03/10 Python
Python的SQLAlchemy框架使用入门
2015/04/29 Python
Python基于DES算法加密解密实例
2015/06/03 Python
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
三星印度官网:Samsung印度
2019/08/03 全球购物
环境工程毕业生自荐信
2013/11/17 职场文书
物流专业自荐信
2014/05/23 职场文书
师德模范事迹材料
2014/06/03 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
八年级作文之我的母亲
2019/12/10 职场文书
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python