Python内置函数reversed()用法分析
这篇文章主要介绍了Python内置函数reversed()用法,结合实例形式分析了reversed()函数的功能及针对序列元素相关操作技巧与使用注意事项,需要的朋友可以参考下
reversed()函数是返回序列seq的反向访问的迭代器。参数可以是列表,元组,字符串,不改变原对象。
1》参数是列表
>>>
l=[1,2,3,4,5]
>>>
ll=reversed(l)
>>> l
[1, 2, 3, 4, 5]
>>> ll
>>> for i in
ll:#第一次遍历
...
...
5 4 3 2 1
>>> for i in
ll:第二次遍历为空,原因见本文最后
...
...
2》参数是列表
>>> l=[3,4,5,6]
>>>
ll=reversed(l)
>>> l
[3, 4, 5, 6]
>>> ll
>>> list(ll)#第一次
[6, 5, 4, 3]
>>>
list(ll)#第二次为空,原因见本文最后
[]
3》参数是元组
>>> t=(4,5,6)
>>>
tt=reversed(t)
>>> t
(4, 5, 6)
>>> tt
>>>
tuple(tt)#第一次
(6, 5, 4)
>>>
tuple(tt)#第二次为空,原因见本文最后
()
4》参数是字符串
>>> s='cba'
>>>
ss=reversed(s)
>>> s
'cba'
>>> ss
>>> list(ss)#第一次
['a', 'b', 'c']
>>>
list(ss)#第二次为空,原因见本文最后
[]
5》参数是字符串
>>> s='1234'
>>>
ss=reversed(s)
>>> s
'1234'
>>> ss
>>>
''.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内置函数reversed()用法分析
- Python 字符串_python 字符串截取_python 字符串替换_python 字符串连接
- python魔法方法__reduce__()的妙用
- Python内置函数reversed()用法分析
- python使用threading获取线程函数返回值的实现方法
- python面向对象中的一些特殊__方法__
- 用Python做一个游戏辅助脚本,完整编程思路分享!
- Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法、如何查询某个函数&关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Scale/Scale的Command)
- 100天精通Python(数据分析篇)——第51天:numpy模块常用函数大全(字符串/数学/算术/统计/排序/搜索函数)
- Python每日一练(数据分析篇新题库)——第42天:排序、函数
- 已解决2. Set PROTOCOL_BUPFERS_PYTHON_iMPLEMENTATION=python (but this will use pure-Python parsing and w
- 已解决Visit python.org to download an earlier version of Python.
- Python采集Top 250信息,看看谁最受欢迎~
- Python getattr() 函数==>获取一个对象的属性值
- 【阶段二】Python数据分析NumPy工具使用04篇:数组常用分析函数、数组广播与数组和矩阵的点积运算
- Python实现哈里斯鹰优化算法(HHO)优化卷积神经网络分类模型(CNN分类算法)项目实战
- Python实现贝叶斯优化器(Bayes_opt)优化Catboost分类模型(CatBoostClassifier算法)项目实战
- Python爬虫:PyExecJS在python中运行javascript代码
- Python极简方法生成Zip文件
- Python标准库:内置函数oct(x)
- Python标准库:内置函数print(*objects, sep=' ', end='n', file=sys.stdout, flush=False)
- python里把dir函数当作查看成员输出
- python pipe stdout 实现cat|grep 功能
- 【python 实战】---- 批量将图片转换成base64工具开发