如何在 Python 中反轉列表
-
在 Python 中使用
range()
來反轉一個列表 -
在 Python 中通過
while
迴圈來反轉一個列表 - 使用 Python 中的切片運算子反轉一個列表
-
在 Python 中使用
reversed()
反轉列表
本教程將演示如何在 Python 中用不同的方式來反轉一個列表。
列表反轉是學習程式設計時最常遇到的入門程式設計問題之一。在 Python 中,有幾種簡單的方法可以反轉一個列表。
在 Python 中使用 range()
來反轉一個列表
range()
是一個 Python 內建函式,它輸出一個數字範圍的列表。
range()
的語法
range(start, stop, step)
這個函式有 3 個引數;主要的必要引數是第二個引數 stop
,一個表示你要停止的數字。有 2 個可選引數,start
指定你應該從哪裡開始計數,step
指定序列的增量。
請注意,stop
的偏移量為 1,因為計數是從 0
開始的。要使用 range()
建立一個停止在 5 的列表,停止值必須是 6。
numbers = list(range(6))
print(numbers)
輸出:
[0, 1, 2, 3, 4, 5]
要反轉這個列表,你必須指定 start
和 step
引數。
start
設定為 5,而 step
是 -1
,因為我們希望每次都將範圍遞減 1。stop
引數也應該設定為 -1
,因為我們想在 0
停止(因為 stop
的偏移量為 1)。
numbers = list(range(5, -1, -1))
print(numbers)
輸出:
[5, 4, 3, 2, 1, 0]
在 Python 中通過 while
迴圈來反轉一個列表
宣告一個由 10 個隨機整陣列成的列表,我們要以反向順序建立一個新的列表。
numbers = [66, 78, 2, 45, 97, 17, 34, 105, 44, 52]
在列表上使用 while 迴圈來反向輸出。首先,得到列表的大小,並將其減去 1,指向列表的最後一個元素。我們也宣告一個空列表來儲存前一個列表的新逆向版本。
idx = len(numbers) - 1
newList = []
現在使用 while 迴圈來迭代並儲存新列表中的每個元素,每次迭代都會遞減 idx
,直到達到 0
。
while (idx >= 0):
newList.append(numbers[idx])
idx = idx - 1
print(newList)
輸出:
[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]
使用 Python 中的切片運算子反轉一個列表
如果你不喜歡遍歷列表,那麼可以使用列表切片運算子將陣列索引遞減 1。
與 range()
類似,切片運算子接受三個引數:start
、stop
和 step
。
將前兩個引數留空,這樣它將覆蓋整個陣列,並將 step
值設定為 -1
,這樣它將從陣列的末端開始,每次遞減 1。
newList = numbers[::-1]
print(newList)
輸出:
[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]
在 Python 中使用 reversed()
反轉列表
另一種在 Python 中反轉一個列表的簡單方法是使用內建函式 reversed()
。這個函式接受一個列表作為引數,並返回同一個列表的反轉版本的迭代器。
使用上面同樣的例子 numbers
,使用這個函式反轉列表。不要忘了將這個函式放在 list()
函式中,以便將 reversed()
的返回值實際儲存到一個列表中。
newList = list(reversed(numbers))
print(newList)
另外,你也可以使 for
迴圈來遍歷反轉的列表迭代器,並直接將其儲存在 newList
中。
newList = [num for num in reversed(numbers)]
print(newList)
這兩種解決方案的輸出都是一樣的。
[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]
總之,Python 提供了一個簡單的方法,通過使用函式 reversed()
來反轉一個列表。你也可以通過在 for
或 while
迴圈中手動反轉一個列表。Python 也有一個簡單的方法,如果你對使用切片運算子很熟悉的話,可以在一行中反轉一個列表。
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn