# 串列是 Python 裡非常重要的資料結構,熟練掌握會讓你寫程式更得心應手。從基礎到進階慢慢來~
# Python 中,**建立串列(list)**的方式其實滿多種,依照你想要的情境會選不同的寫法。下面是最常見的幾種:
# 🔹1. 用中括號 [] 建立(最基本)
fruits = ["apple", "banana", "cherry"]
numbers = [1, 2, 3, 4]
# 🔹2. 用 list() 函式建立
letters = list("hello") # ['h', 'e', 'l', 'l', 'o']
nums = list((1, 2, 3)) # [1, 2, 3],也可以從 tuple 轉換
empty = list() # 建立一個空的串列
# 🔹3. 用 串列推導式(List Comprehension)
# 這是一種 Python 很強大的語法糖,用來快速建立串列:
squares = [x**2 for x in range(1, 6)] # [1, 4, 9, 16, 25]
evens = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]
# 🔹4. 用 * 重複元素
zeros = [0] * 5 # [0, 0, 0, 0, 0]
names = ["Ann"] * 3 # ['Ann', 'Ann', 'Ann']
# 🔹5. 用函式生成(像是 range())
nums = list(range(1, 6)) # [1, 2, 3, 4, 5]
# 🔹6. 其他資料結構轉為串列
s = "abc"
list(s) # ['a', 'b', 'c']
t = (1, 2, 3)
list(t) # [1, 2, 3]
d = {"a": 1, "b": 2}
list(d) # ['a', 'b'](只會取 key)
#名詞認識
# 🔻 正確的就法:
# 「產生一個名為 evens 的串列,包含 10 個整數元素,值為 0 到 9」
# ⚠️ 錯誤的說法
# 「產生一個串列名稱為 evens,有 10 個切片,值包含 0 到 9」
# ✅ 程式碼解說:
evens = [x for x in range(10)]
# 這段是用 串列推導式 建立一個 evens 串列,內容是 range(10),也就是 0 到 9 的整數。
# 結果是:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 共 10 個整數
# 原因如下:
# 用詞 說明
# ❌ 切片 (slice) 指的是串列的一部分,如 evens[2:5] 才是「切片」
# ✅ 元素 (element) 或項目 (item) 才是指一個個像 0、1、2... 這樣的值
# 📝 小技巧補充
# 如果你想真的抓出「偶數」來符合 evens 這個名字,可以這樣寫:
evens = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]
##########
# 幫你用圖解方式拆解串列推導式使用說明:
# 🔍 以這程式碼為例:
squares = [x**2 for x in range(1, 6)]
# ✅ 正確解釋:
for x in range(1, 6): #表示逐一取出 1 到 5 的每個數字(共 5 個)
# x**2:表示每次迴圈要「加入串列的值」,這裡是 x 的平方
# 📦 最後得到的串列是:
[1, 4, 9, 16, 25]
# 🔁 簡化為一般迴圈的版本:
squares = []
for x in range(1, 6):
squares.append(x**2)
squares = [x**2 for x in range(1, 6)]
# ⚠️ 我剛始以為是這樣:
# 「for x in 的左邊為新增串到元素的值,而 in range 是新增串列的數量」
# 這樣說 意思差不多,但稍微調整會更準確:
# ✅ 修正版說法:
# 「for x in range(1, 6) 是控制迴圈執行的次數與值來源(從 1 到 5),
# 而 x**2 是每次要加入串列的元素內容」
# 🧠 額外補充(可選讀)
# 你也可以這樣想串列推導式的邏輯順序:
# [ 表達式 for 變數 in 可迭代物件 if 條件]
# [ x**2 for x in range(1, 6) ]
# 我們可以這樣分類練習:(以後)
# 🧩【基礎操作】
# 建立串列
# 串列索引與切片
# 新增 / 刪除 / 插入 / 修改元素
# 🧠【中階練習】
# 串列迴圈操作(for 與 while)
# 串列條件過濾、統計
# 排序與搜尋
# 💡【進階挑戰】
# 巢狀串列(list of lists)
# 串列推導式(list comprehension)
# 與字典或集合的整合操作