Python 元組與集合練習:固定記錄與唯一值
元組和集合解決兩類不同的問題:儲存固定記錄,以及只保留唯一值。練習在它們之間做選擇,而不是預設使用列表。
把記錄解包成變數
元組適合小的固定記錄。解包會給每個欄位一個名字,讓下一行讀起來像一句話。左邊的變數數量必須和值數量一致。
item = ("latte", 4.5)
name, price = item
print(f"{name}: ${price:.2f}")有名字的記錄
把元組當作不可變物件
不能對元組呼叫 append,也不能替換某個位置。值變化時建立新元組。這種限制在記錄不應該被意外修改時很有用。
point = (3, 5)
shifted = (point[0] + 1, point[1] + 1)
print(shifted)建立新元組
去重但不保留順序
set(values) 會為每個值保留一份。用 len(set(values)) 統計不同項。如果需要保留原順序,單靠集合不夠;可以一邊走訪一邊維護 seen 集合和新列表。
orders = ["latte", "tea", "latte", "mocha"]
unique = set(orders)
print(len(unique))統計不同值
成員判斷與集合運算
用 in 做成員判斷,快速且易讀。交集和併集回答「重疊部分」和「合併後的值」。需要穩定顯示時,列印前先排序。
a = {"latte", "tea"}
b = {"tea", "mocha"}
print(sorted(a & b))
print(sorted(a | b))重疊與併集
有意識地選擇集合型別
順序和重複項重要時用列表;固定記錄用元組;唯一性或成員判斷用集合。先說清楚要回答的問題,選擇通常就很明顯。
orders = ["latte", "tea", "latte"]
print(orders[0])
print(len(set(orders)))位置與唯一性
你的練習清單
- 元組用圓括號和逗號表示。
- 確定欄位數量後再解包。
- 用集合統計不同值。
- 需要順序時,列印集合前先排序。
常見問題
元組裡可以放列表嗎?
可以。元組本身不可變,但裡面的可變物件仍然可以改變。通常這意味著資料建模方式需要再考慮。
為什麼集合的順序每次不同?
集合是無序集合。不要依賴它的顯示順序;需要順序時排序,或建構一個有序列表。
怎樣去重又保留順序?
走訪原列表,用 seen 集合記錄見過的值,只有沒見過的值才追加到結果列表。
練習元組與集合
12 道題,覆蓋解包、去重、成員判斷和集合運算。
繼續閱讀: