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中为feedparser设置超时时间避免堵塞
Sep 28 Python
Python实现测试磁盘性能的方法
Mar 12 Python
Python中用于返回绝对值的abs()方法
May 14 Python
python中ASCII码和字符的转换方法
Jul 09 Python
python dlib人脸识别代码实例
Apr 04 Python
python 随机生成10位数密码的实现代码
Jun 27 Python
python kafka 多线程消费者&amp;手动提交实例
Dec 21 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
Jun 22 Python
python和js交互调用的方法
Jun 23 Python
Windows 平台做 Python 开发的最佳组合(推荐)
Jul 27 Python
python制作微博图片爬取工具
Jan 16 Python
七个非常实用的Python工具包总结
Jun 15 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学习 计数器实例代码
2008/06/15 PHP
PHP 事务处理数据实现代码
2010/05/13 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
JavaScript 原型与继承说明
2010/06/09 Javascript
jquery封装的对话框简单实现
2013/07/21 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
js中创建对象的几种方式
2017/02/05 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
使用Vue构建可重用的分页组件
2018/03/26 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
vue实现键盘输入支付密码功能
2018/08/18 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
详解vue项目中使用token的身份验证的简单实践
2019/03/08 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
Python列表和元组的定义与使用操作示例
2017/07/26 Python
Python人脸识别初探
2017/12/21 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
使用Python发现隐藏的wifi
2020/03/04 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
自荐信范文
2013/12/10 职场文书
个人求职信范文分享
2014/01/31 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
安全生产学习心得体会
2016/01/18 职场文书
七年级作文之秋游
2019/10/21 职场文书
Python进程间的通信之语法学习
2022/04/11 Python