iT邦幫忙

2026 iThome 鐵人賽

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

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

[Day 15] 進階第一關:一行抵三行的魔法!Python 推導式 (Comprehension

  • 分享至 

  • xImage
  •  

今日對話:什麼是一行抵三行的寫法?

我的 Prompt(提示詞):

「我之前都是用 for 迴圈搭配 .append() 來建立 List。但聽說 Python 有一種叫『推導式』的寫法,可以把好幾行縮成一行?請用白話文教我 List 和 Dict 的推導式怎麼寫,並比較傳統寫法與推導式的差異。除了字數少,它還有什麼好處嗎?」

AI 導師的建議與拆解

AI 導師告訴我,推導式是 Python 的一大特色,它就像是給迴圈施了縮小燈魔法:

  1. List Comprehension(串列推導式)的公式
    把傳統的迴圈倒過來唸!

公式:[要放進去的東西 for 變數 in 範圍 if 條件]
白話翻譯:給範圍裡的每一個變數,如果符合條件,就把它變成我們要的東西,然後塞進中括號裡。

  1. Dict Comprehension(字典推導式)
    跟 List 很像,只是外面換成大括號 {},裡面要標明 Key: Value 的對應關係。

公式:{Key: Value for 變數 in 範圍 if 條件}

  1. 推導式的兩大優勢與一個警告

優勢一:超乾淨。省去了先建立空 List 再慢慢 .append() 的繁瑣步驟。
優勢二:效能更好。因為推導式底層是用 C 語言優化過的,執行速度通常比傳統 for 迴圈快!
AI 警告:不要走火入魔!如果你的邏輯太複雜(例如迴圈裡面包迴圈,又包了三層 if),寫成一行會像外星文。「可讀性」永遠大於「簡短」!

實作筆記與驗證

看了公式還是有點抽象,我直接在 VS Code 建立 day15.py檔案,把前幾天寫過的偶數運算,用傳統寫法跟推導式寫法對比一次:

python
#任務:找出 1~10 裡面的偶數,並把他們「平方」存起來

#❌ 傳統寫法 (4 行程式碼)
old_list = []
for i in range(1, 11):
if i % 2 == 0:
old_list.append(i ** 2)
print("傳統寫法結果:", old_list)

#⭕ 推導式寫法 (只要 1 行!)
#拆解:[動作(平方) -> 迴圈(1到10) -> 條件(如果是偶數)]
new_list = [i ** 2 for i in range(1, 11) if i % 2 == 0]
print("推導式寫法結果:", new_list)

#------------------------------------------
#加碼測試:Dict 推導式 (把名單轉成字典,記錄名字長度)
names = ["Alice", "Bob", "Charlie"]

#拆解:{Key(名字): Value(名字長度) -> 迴圈(走訪名單)}
name_lengths = {name: len(name) for name in names}
print("\n字典推導式結果:", name_lengths)
#輸出: {'Alice': 5, 'Bob': 3, 'Charlie': 7}

今日小結

今天我們解鎖了進階語法的第一關「推導式」,不僅讓程式碼變短了,執行速度也更快了。但記得 AI 的提醒,好讀永遠是最重要的!


上一篇
[Day 14] 基礎階段小結:動手做!結合這 13 天所學的猜數字遊戲
下一篇
[Day 16] 進階第二關:程式當機救星!用 try-except 優雅地接住錯誤 (例外處理)
系列文
當 Python 初學者遇到 AI:30 天人機協作學習手記 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言