iT邦幫忙

2026 iThome 鐵人賽

DAY 9
0
佛心分享-IT 人自學之術

當 Python 初學者遇到 AI:30 天人機協作學習手記系列 第 9

[Day 09] 不可變與不重複的魔法:Python 容器資料結構(二)Tuple 與 Set

  • 分享至 

  • xImage
  •  

今日對話:Tuple 與 Set 又是什麼?

我的 Prompt(提示詞):

「我已經學會 List 了。請用白話文告訴我 Python 的 Tuple(元組)與 Set(集合)是什麼?它們跟 List 到底差在哪裡?什麼時候該用哪一個?」

AI 導師的建議與拆解

AI 導師這次給出了兩個極具代表性的比喻,讓我秒懂這兩者的核心差異:

  1. Tuple(元組):上了鎖的保險箱

語法:使用小括號 (),例如 point = (10, 20)。
核心特性:不可變(Immutable)!一旦建立了 Tuple,裡面的東西就絕對不允許新增、修改或刪除。
使用場景:適合儲存「不可以被修改」的資料(如:地理座標、RGB 顏色數值、帳號密碼預設設定)。因為它不可變,所以 Python 處理它時比 List 更省記憶體、速度更快!

  1. Set(集合):具備自動去重魔法的袋子

語法:使用大括號 {},例如 skills = {"Python", "Git"}。
核心特性:
無序:裡面的東西沒有順序,所以不能用 set[0] 這種編號來拿資料。
絕對不重複:如果你把相同的東西塞進 Set 裡無數次,它只會保留一份!
使用場景:快速幫串列「去重複」,或是做數學上的交集(共同點)、聯集(全部)與差集(缺少的項目)比對。

實作筆記與驗證

瞭解了特性後,我在 VS Code 建立了 day09.py檔案來驗證 Tuple 的「不可變性」與 Set 的「去重與集合運算」:

python
1.Tuple (元組) 驗證:不可變性與優雅解包
gps_location = (25.033, 121.565) # 台北 101 的 GPS 座標 (緯度, 經度)
print(f"GPS 座標:{gps_location}")

嘗試修改 Tuple 內容會直接報錯!(此行取消註解會觸發 TypeError)
#gps_location[0] = 25.000

Tuple 解包 (Unpacking) 技巧:一次賦值給多個變數
lat, lon = gps_location
print(f"緯度:{lat} | 經度:{lon}")

2.Set (集合) 驗證:自動去重與技能比對
raw_tags = ["Python", "AI", "Python", "Web", "AI", "Git"]

直接把含有重複值的 List 轉成 Set,瞬間去重!
unique_tags = set(raw_tags)
print(f"\n原始標籤(包含重複):{raw_tags}")
print(f"去重後的標籤 Set:{unique_tags}")

集合運算:職缺技能比對
my_skills = {"Python", "Git", "VS Code"}
job_requirements = {"Python", "SQL", "Docker", "Git"}

print(f"\n我具備且符合要求的技能 (交集 &):{my_skills & job_requirements}")
print(f"我目前尚缺少的技能 (差集 -):{job_requirements - my_skills}")

今日小結

學會了Tuple 不可變,專門保護不該被修改的資料;Set{}不重複且無序,專門做資料去重與集合比對。


上一篇
[Day 08] 資料的魔法大背包:Python 容器資料結構(一)List 串列
下一篇
[Day 10] 幫資料貼上專屬姓名貼:Python 容器資料結構(三)Dictionary 字典
系列文
當 Python 初學者遇到 AI:30 天人機協作學習手記10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言