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得到相反結果的原因所在。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM