Python 元組:不可變序列與拆包

了解 Python 元組。了解何時使用元組而不是列表、元組解包的工作原理以及不變性如何確保資料安全。

在編輯器中嘗試

概述

元組是 Python 中有序的、不可變的元素序列。與列表不同,列表用方括號“[]”括起來並且可以更改,而元組則用括號“()”括起來,一旦創建就無法修改。嘗試在元組中新增、追加、刪除或重新分配元素將導致執行時間錯誤。這種不變性充當了安全功能,確保應用程式中傳遞的資料保持恆定和安全。

由於元組是不可變的,因此它們比列表更快並且使用更少的記憶體。它們也是可散列的(假設元組中的所有元素都是可散列的),這允許它們用作字典中的鍵或集合中的元素——功能列表不支援。元組傳統上用於將異質資料記錄分組,例如表示資料庫行、座標或 RGB 顏色值。

元組最優雅的功能之一是元組拆包。這允許您將元組的元素分配給單行中的各個變數(例如“x, y = 座標”)。當從函數傳回多個值時,它被大量使用。 Python 還允許使用解包 (`a, b = b, a`) 動態交換變量,而不需要臨時的第三個變量,使您的程式碼明顯更乾淨且更易於遵循。

程式碼和執行輸出

將座標建立為元組,演示不變性限制並解包元素。

tuples_demo.py
在編輯器中嘗試
# Creating tuples
location = (40.7128, -74.0060)  # NYC Coordinates
print(f"Latitude: {location[0]}, Longitude: {location[1]}")

# Tuple unpacking
lat, lon = location
print(f"Unpacked Lat: {lat} | Unpacked Lon: {lon}")

# Function returning multiple values
def get_user_info():
    return "Alice", 25, "admin"

name, age, role = get_user_info()
print(f"{name} ({role}) is {age} years old.")
端子輸出
Latitude: 40.7128, Longitude: -74.006
Unpacked Lat: 40.7128 | Unpacked Lon: -74.006
Alice (admin) is 25 years old.

逐步實施

  • 從輔助函數中乾淨地傳回多個值
  • 儲存座標、顏色或資料庫記錄等常數
  • 為多維映射定義不可變字典鍵

常見問題解答

如何定義具有單一元素的元組?

您必須在元素後面加上一個尾隨逗號,例如 single_item = (42,)。如果沒有逗號,Python 將其視為標準括號表達式。

您可以修改嵌套在元組內的清單嗎?

是的。雖然元組參考本身是不可變的,但如果它包含可變物件(例如清單),您可以就地修改這些清單的內容。

相關主題

推薦的 Python 資源

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