如何在 Python 中對清單進行切片(索引、步驟和反轉)

了解如何使用強大的括號語法在 Python 中對清單進行切片。掌握開始、停止和步驟參數、負索引和反轉清單。

在編輯器中嘗試此解決方案

概述

切片是 Python 最直觀、最強大的功能之一,可讓您使用乾淨簡潔的語法來提取清單、元組或字串的子集。 Python 的切片表示法可讓您在方括號內指定一系列索引,而不是編寫冗長的循環來從清單中複製特定元素。

列表切片的完整語法是「my_list[start:stop:step]」。 「start」索引包含在內,「stop」索引不包含,「step」定義元素之間的增量(預設為 1)。如果省略“start”,Python 預設位於清單的開頭。如果省略“stop”,Python 預設位於清單末端。這使得提取集合的部分具有高度表現力。

切片也非常通用,因為它支援負索引。負的開始或停止索引從清單末尾開始向後計數(其中“-1”表示最後一項)。透過設定負步長值,例如“my_list[::-1]”,您可以快速擷取清單的反向副本。了解切片範圍對於乾淨的資料擷取至關重要。

程式碼和執行輸出

此腳本示範了使用不同的開始、停止、步長範圍、負索引和清單反轉的清單切片。

list_slicing.py
在編輯器中嘗試
numbers = [0, 10, 20, 30, 40, 50, 60, 70, 80]

# 1. Basic slicing: elements from index 2 up to (but excluding) 6
subset = numbers[2:6]
print("Subset [2:6]:", subset)

# 2. Omitting indices: start to index 4, and index 5 to end
first_five = numbers[:5]
last_four = numbers[5:]
print("First five [:5]:", first_five)
print("Last four [5:]:", last_four)

# 3. Using a step parameter: get every second element
every_second = numbers[::2]
print("Every second [::2]:", every_second)

# 4. Negative indexing: get the last three elements
last_three = numbers[-3:]
print("Last three [-3:]:", last_three)

# 5. Reverse the list using step=-1
reversed_numbers = numbers[::-1]
print("Reversed list [::-1]:", reversed_numbers)
端子輸出
Subset [2:6]: [20, 30, 40, 50]
First five [:5]: [0, 10, 20, 30, 40]
Last four [5:]: [50, 60, 70, 80]
Every second [::2]: [0, 20, 40, 60, 80]
Last three [-3:]: [60, 70, 80]
Reversed list [::-1]: [80, 70, 60, 50, 40, 30, 20, 10, 0]

逐步實施

  • 使用 list[start:stop] 提取從索引 start 到 stop 的元素,但不包括 stop。
  • 省略開始或停止索引(例如 list[:4] 或 list[4:])以從清單邊界進行切片。
  • 在括號 list[::step] 內傳遞第三個參數以定期跳過元素。
  • 使用負索引從集合末尾向後計數元素。

常見問題解答

切片會修改原始清單嗎?

不,清單切片傳回所要求範圍的淺表副本,使原始清單完全不變。

如果切片索引越界會發生什麼事?

與存取引發 IndexError 的單一索引不同,切片是寬容的,只是在清單邊界限制範圍,如果沒有元素落入該範圍,則傳回空列表。

相關主題

推薦的 Python 資源

透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。