Python中列表和字串的反轉

嗨学编程發表於2024-04-23

一、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中列表和字串的反轉操作(這才是冰山一角,還有更多的實現方式),實際應用中還是使用列表自帶的函式和切片操作進行反轉即可,手寫的僅供參考使用,寫程式碼嘛,怎麼簡單易懂怎麼來。

相關文章