python字符串反转

实现字符串反转的方法有很多,这里我简单介绍一些常用的。

1)字符串切片:

>>> s = '123456' >>> print(s[::-1]) 654321

这种方式最简单,效率最高,是我最推荐的方法。当然这里的切片并不是字符串独有的,列表也可以,实际上我们认为字符串是特殊的列表。

>>> s = '123456' >>> list(s)[::-1] ['6', '5', '4', '3', '2', '1'] >>> print(''.join(list(s)[::-1])) 654321

2)借助列表的reverse():

>>> s = '123456' >>> ls = list(s) >>> ls.reverse() >>> ls ['6', '5', '4', '3', '2', '1'] >>> print(''.join(ls)) 654321

3)使用reduce()函数:

这里要注意python版本问题,如果是python 2,那么reduce()是一个内置函数,可以直接使用;但是在python 3,reduce()从内置函数移除了,放入了functools模块,因此需要从functools中导入。这里我使用的是python 3:

>>> s = '123456' >>> from functools import reduce >>> reduce(lambda x,y:y+x,s) '654321' >>> reduce(lambda x,y:x+y,s) '123456'

大家有没有发现两次reduce有什么不同。没有的话我们再看两个例子就明白了:

>>> a = [1,2,3,4] >>> reduce(lambda x,y:y+x,a) 10 >>> reduce(lambda x,y:x+y,a) 10

首先lambda定义一个匿名函数,它有两个参数x和y,第一次是计算y+x,第二次是计算x+y。

reduce() 函数会对参数序列中元素进行累积。函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

因此,上面两种结果的不同其实是reduce()的迭代对象发生了变化导致,对于数字列表而言前后并没有区别,但是字符串就不同了,当迭代对象是字符串时,'+'号不再是加号,而是连接符,这就是为什么x+y和y+x得到相反结果的原因所在。

 


__EOF__

本文作者Marvin-wen
本文链接https://www.cnblogs.com/marvin-wen/p/11888400.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Marvin-wen  阅读(4944)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示