欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡單談?wù)凱ython中的反轉(zhuǎn)字符串問題

 更新時間:2016年10月24日 09:41:50   投稿:hebedich  
本文給大家總結(jié)了5種可以實現(xiàn)python中反轉(zhuǎn)字符串的方法,非常的實用,有需要的小伙伴可以參考下

按單詞反轉(zhuǎn)字符串是一道很常見的面試題。在Python中實現(xiàn)起來非常簡單。

def reverse_string_by_word(s):
 lst = s.split() # split by blank space by default
 return ' '.join(lst[::-1])

s = 'Power of Love'
print reverse_string_by_word(s)
# Love of Power

s = 'Hello World!'
print reverse_string_by_word(s)
# World! Hello

上面的實現(xiàn)其實已經(jīng)能滿足大多數(shù)情況,但是并不完美。比如第二個字符串中的感嘆號并沒有被翻轉(zhuǎn),而且原字符串中的空格數(shù)量也沒有保留。(在上面的例子里其實Hello和World之間不止一個空格)

我們期望的結(jié)果應(yīng)該是這樣子的。

print reverse_string_by_word(s)
# Expected: !World Hello

要改進上面的方案還不把問題復(fù)雜化,推薦使用re模塊。你可以查閱re.split() 的官方文檔。我們看一下具體例子。

>>> import re
>>> s = 'Hello World!'

>>> re.split(r'\s+', s) # will discard blank spaces
['Hello', 'World!']

>>> re.split(r'(\s+)', s) # will keep spaces as a group
['Hello', ' ', 'World!']

>>> s = '< Welcome to EF.COM! >'

>>> re.split(r'\s+', s) # split by spaces
['<', 'Welcome', 'to', 'EF.COM!', '>']

>>> re.split(r'(\w+)', s) # exactly split by word
['< ', 'Welcome', ' ', 'to', ' ', 'EF', '.', 'COM', '! >']

>>> re.split(r'(\s+|\w+)', s) # split by space and word
['<', ' ', '', 'Welcome', '', ' ', '', 'to', '', ' ', '', 'EF', '.', 'COM', '!', ' ', '>']

>>> ''.join(re.split(r'(\s+|\w+)', s)[::-1])
'> !COM.EF to Welcome <'

>>> ''.join(re.split(r'(\s+)', s)[::-1])
'> EF.COM! to Welcome <'

>>> ''.join(re.split(r'(\w+)', s)[::-1])
'! >COM.EF to Welcome< '

如果你覺得用切片將序列倒序可讀性不高,那么其實也可以這樣寫。

>>> ''.join(reversed(re.split(r'(\s+|\w+)', s)))
'> !COM.EF to Welcome <'

一句話搞定,so easy!

Python翻轉(zhuǎn)字符串(reverse string), 一共包含5種方法, 其中第一種最簡單, 即步長為-1, 輸出字符串;

方法如下

5種方法的比較:

1. 簡單的步長為-1, 即字符串的翻轉(zhuǎn)(常用);
2. 交換前后字母的位置;
3. 遞歸的方式, 每次輸出一個字符;
4. 雙端隊列, 使用extendleft()函數(shù);
5. 使用for循環(huán), 從左至右輸出;

代碼:

# -*- coding: utf-8 -*- 
 
#eclipse pydev, python 3.3 
#by C.L.Wang 
#time: 2014. 4. 11 
 
string = 'abcdef' 
 
def string_reverse1(string): 
 return string[::-1] 
 
def string_reverse2(string): 
 t = list(string) 
 l = len(t) 
 for i,j in zip(range(l-1, 0, -1), range(l//2)): 
  t[i], t[j] = t[j], t[i] 
 return "".join(t) 
 
def string_reverse3(string): 
 if len(string) <= 1: 
  return string 
 return string_reverse3(string[1:]) + string[0] 
 
from collections import deque 
def string_reverse4(string): 
 d = deque() 
 d.extendleft(string) 
 return ''.join(d) 
 
def string_reverse5(string): 
 #return ''.join(string[len(string) - i] for i in range(1, len(string)+1)) 
 return ''.join(string[i] for i in range(len(string)-1, -1, -1)) 
 
print(string_reverse1(string)) 
print(string_reverse2(string)) 
print(string_reverse3(string)) 
print(string_reverse4(string)) 
print(string_reverse5(string)) 

輸出:

fedcba 
fedcba 
fedcba 
fedcba 
fedcba 

相關(guān)文章

  • Python?編程操作連載之字符串,列表,字典和集合處理

    Python?編程操作連載之字符串,列表,字典和集合處理

    這篇文章主要介紹了Python?編程操作連載之字符串,列表,字典和集合處理,文章圍繞主題相關(guān)資料展開詳細的內(nèi)容介紹,需要的朋友可參考一下下面文章內(nèi)容
    2022-06-06
  • python爬蟲反爬之圖片驗證功能實現(xiàn)

    python爬蟲反爬之圖片驗證功能實現(xiàn)

    這篇文章主要介紹了python爬蟲反爬之圖片驗證功能實現(xiàn),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03
  • Python使用Pandas處理測試數(shù)據(jù)的方法

    Python使用Pandas處理測試數(shù)據(jù)的方法

    Pandas是一個功能極其強大的數(shù)據(jù)分析庫,可以高效地操作各種數(shù)據(jù)集,這篇文章主要介紹了Python自動化測試-使用Pandas來高效處理測試數(shù)據(jù),需要的朋友可以參考下
    2023-02-02
  • OpenCV?基本圖形繪制函數(shù)詳解

    OpenCV?基本圖形繪制函數(shù)詳解

    這篇文章主要介紹了OpenCV?基本圖形繪制函數(shù),用于繪制圓的circle函數(shù),用于繪制填充的多邊形的fillPoly函數(shù),本文給大家提到好幾種,通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2021-12-12
  • Python實現(xiàn)兩組數(shù)據(jù)縱向排序

    Python實現(xiàn)兩組數(shù)據(jù)縱向排序

    在數(shù)據(jù)分析和處理過程中,排序是一項非常常見的操作,本文將詳細講解如何使用Python實現(xiàn)兩組數(shù)據(jù)的縱向排序,并提供完整的開發(fā)思路和代碼示例,需要的可以參考下
    2024-12-12
  • Python中操作符重載用法分析

    Python中操作符重載用法分析

    這篇文章主要介紹了Python中操作符重載用法,較為詳細的分析了Python操作符重載的功能,使用方法與相關(guān)注意事項,需要的朋友可以參考下
    2016-04-04
  • django xadmin實現(xiàn)自定義頁面并且權(quán)限控制方式

    django xadmin實現(xiàn)自定義頁面并且權(quán)限控制方式

    這篇文章主要介紹了django xadmin實現(xiàn)自定義頁面并且權(quán)限控制方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python調(diào)用可執(zhí)行文件.exe的2種實現(xiàn)方法

    python調(diào)用可執(zhí)行文件.exe的2種實現(xiàn)方法

    Python是一種流行的編程語言,可以輕松地通過腳本調(diào)用各種應(yīng)用程序,本文就詳細的介紹了python調(diào)用可執(zhí)行文件.exe的2種實現(xiàn)方法,感興趣的可以了解一下
    2023-08-08
  • Python文件讀寫處理日常任務(wù)終極工具實例

    Python文件讀寫處理日常任務(wù)終極工具實例

    Python文件的讀寫操作時,有很多需要考慮的細節(jié),這包括文件打開方式、讀取和寫入數(shù)據(jù)的方法、異常處理等,在本文中,將深入探討Python中的文件操作,旨在提供全面的指南,幫你充分了解Python文件的讀寫
    2023-11-11
  • Python解析m3u8拼接下載mp4視頻文件的示例代碼

    Python解析m3u8拼接下載mp4視頻文件的示例代碼

    這篇文章主要介紹了Python解析m3u8拼接下載mp4視頻文件的示例代碼,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03

最新評論