實現字串反轉的方法有很多,這裡我簡單介紹一些常用的。
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
'
>>> 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得到相反結果的原因所在。
python 字串反轉
usr bin env python3 coding utf 8 filename reverse string.py author zoujiameng aliyun.com.cn 題目描述 給定乙個句子 只包含字母和空格 將句子中的單詞位置反轉,單詞用空格分割,單詞之間只有乙個空格,前後沒有空格...
Python 字串反轉
一 字串切片 簡潔 res s 1 二 借助listt的reverse 2.使用list的reverse函式 3.使用join函式將列表中元素組合成乙個字串 l list s res join l.reverse 三 使用reduce函式 result reduce lambda x,y y x,s...
python 反轉字串
例如 s abcdef 要求反轉輸出 fedcba 方法1 字串切片 s 1 方法2 將字串s轉成列表 利用列表的.reverse 反轉函式解決 ls list s ls.reverse print join ls 方法3 ls list s result for l in range len ls...