python字串反轉

2022-06-29 05:54:11 字數 1508 閱讀 7476

實現字串反轉的方法有很多,這裡我簡單介紹一些常用的。

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...