一、Python現成的反轉功能:
在Python中有專門進行列表反轉的函式--reverse()
l = [13, 30, 42, 85, 9, 45]
l.reverse() # [45, 9, 85, 42, 30, 13]
還可以使用切片操作進行列表反轉
l = [13, 30, 42, 85, 9, 45]
print(l[::-1]) # [45, 9, 85, 42, 30, 13]
關於字串的反轉,並沒有確切的函式對字串進行反轉,但是字串也可以使用切片進行反轉
s = "hello"
print(s[::-1]) # olleh
以上對列表和字串的反轉,都是現成的,使用起來很方便;但是我們也可以自己為列表和字串手寫一個反轉函式(僅供參考)
二、列表反轉函式:
- 把列表中的值當成轉成字典的value,字典的key為遞增的數字
- 透過sorted()對字典key進行降序
- 依次取出進行降序後字典的value值,放到列表中
- 得到的就是反轉後的列表
程式碼:
def reverse_list(n: list) -> list:
d = dict(zip([i for i in range(len(n))], n))
return [d[k] for k in sorted(d, reverse=True)]
使用:
l = [13, 30, 42, 85, 9, 45]
print(reverse_list(l)) # [45, 9, 85, 42, 30, 13]
- 把列表透過 enumerate() 返回一個可以列舉的物件,該物件的next()方法將返回一個元組
- 把返回的元組放到一個新的列表中,透過sorted() 進行列表排序(根據列表中元組元素的第一個元素進行排序,使用降序)
- 遍歷排序後的新列表,取每個元組元素的第二個元素,組成新列表
- 得到的新列表就是反轉後的列表
程式碼:
def reverse_list(l: list) -> list:
return [i[1] for i in sorted([v for v in enumerate(l)], reverse=True)]
使用:
l = [13, 30, 42, 85, 9, 45]
print(reverse_list(l)) # [45, 9, 85, 42, 30, 13]
- 取列表最後一位追加到新列表後面
- 然後透過切片把最後一位之前的資料重新賦值給當前列表
- 依次重複操作,直至列表為空
- 得到的新列表就是反轉後的
程式碼:
def reverse_list(n: list) -> list:
a = []
while len(n) > 0:
a.append(n[-1])
n = n[:-1]
return a
使用:
l = [13, 30, 42, 85, 9, 45]
print(reverse_list(l)) # [45, 9, 85, 42, 30, 13]
- 透過切片獲取列表下標為 [-i - 1] 的元素
- 把切片得到的元素新增到新的列表中
- 依次重複操作,直至迴圈結束
- 得到的新列表就是反轉後的
程式碼:
def reverse_list(n: list) -> list:
return [n[-i - 1] for i in range(len(n))]
使用:
l = [13, 30, 42, 85, 9, 45]
print(reverse_list(l)) # [45, 9, 85, 42, 30, 13]
三、字串反轉函式:
- 透過切片獲取字串最後一位
- 透過字串拼接,把最後一位拼接到新的字串中
- 然後透過切片把最後一位之前的資料重新賦值給當前字串
- 依次重複操作,直至字串為空
- 得到的新字串就是反轉後的
程式碼:
#學習中遇到問題沒人解答?小編建立了一個Python學習交流群:153708845
def reverse_str(s: str) -> str:
new_s = ''
while len(s) > 0:
new_s += (s[-1])
s = s[0:-1]
return new_s
使用:
s = "hello"
print(reverse_str(s)) # olleh
- 透過切片獲取字串下標為 [-i - 1] 的元素
- 透過字串拼接,把切片得到的元素拼接到新的字串中
- 依次重複操作,直至迴圈結束
- 得到的新字串就是反轉後的
程式碼:
def reverse_str(s: str) -> str:
new_s = ''
for i in range(len(s)):
new_s += s[-i - 1]
return new_s
使用:
s = "hello"
print(reverse_str(s)) # olleh
以上就是關於Python中列表和字串的反轉操作(這才是冰山一角,還有更多的實現方式),實際應用中還是使用列表自帶的函式和切片操作進行反轉即可,手寫的僅供參考使用,寫程式碼嘛,怎麼簡單易懂怎麼來。