python字符串反轉

實現字符串反轉的方法有不少,這裏我簡單介紹一些經常使用的。python

1)字符串切片:函數

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

這種方式最簡單,效率最高,是我最推薦的方法。固然這裏的切片並非字符串獨有的,列表也能夠,實際上咱們認爲字符串是特殊的列表。spa

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

2)藉助列表的reverse():code

>>> 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:blog

>>> 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。io

reduce() 函數會對參數序列中元素進行累積。函數將一個數據集合(鏈表,元組等)中的全部數據進行下列操做:用傳給 reduce 中的函數 function(有兩個參數)先對集合中的第 一、2 個元素進行操做,獲得的結果再與第三個數據用 function 函數運算,最後獲得一個結果。function

所以,上面兩種結果的不一樣實際上是reduce()的迭代對象發生了變化致使,對於數字列表而言先後並無區別,可是字符串就不一樣了,當迭代對象是字符串時,'+'號再也不是加號,而是鏈接符,這就是爲何x+y和y+x獲得相反結果的緣由所在。class

相關文章
相關標籤/搜索