清單
一個名字,裝一整排東西。 · ⏱ 約 30 分鐘
你會學到三件事
list 用方括號,裡面可以放任何東西
- 位置從 0 開始,而
-1 是最後一個
- 切片
[a:b] 取一段
開始之前
想記住五個分數,用五個變數的話——你沒辦法用迴圈處理它們,
因為每個名字都不一樣。
一、做一個
nums = [3, 1, 4, 1, 5]
方括號、逗號隔開。⚠️ 可以放不同型別([1, "a", True] 是合法的),
而實務上通常放同一種。
print(len(nums)) # 5 ← 有幾個
二、拿第幾個
print(nums[0]) # 3 ← 第一個
print(nums[4]) # 5 ← 第五個
print(nums[-1]) # 5 ← 🟢 最後一個
print(nums[-2]) # 1 ← 倒數第二個
3 1 4 1 5
[0] [1] [2] [3] [4]
[-5] [-4] [-3] [-2] [-1]
⚠️ 位置從 0 開始,所以五個東西的最大位置是 4。
🟢 而 Python 有負索引——nums[-1] 就是最後一個,
不用寫 nums[len(nums) - 1]。
⚠️ nums[5] 會丟 IndexError。Python 會攔你(很多語言不會)。
三、改和加
nums[0] = 99 # 改第一個
nums.append(9) # 最後面加一個
print(nums) # [99, 1, 4, 1, 5, 9]
| 寫法 |
做什麼 |
x.append(v) |
最後面加一個 |
x.insert(i, v) |
在位置 i 插入 |
x.pop() |
拿掉最後一個並回傳它 |
x.remove(v) |
拿掉第一個等於 v 的 |
x.sort() |
原地排序 |
⚠️ 那個「點」的寫法是新的:點的左邊是誰,右邊是叫它做什麼。
之後會一直出現。
⚠️ nums.sort() 改的是原本那個,回傳 None:
nums = nums.sort() # 🔴 nums 變成 None
nums.sort() # ✅
sorted(nums) # ✅ 這個才是回傳新的
四、切片
print(nums[1:3]) # [1, 4] ← 位置 1 到 2
⚠️ 含頭不含尾——又是那個約定。
nums[:3] # 前三個
nums[2:] # 從位置 2 到最後
nums[:] # 整份【複本】
nums[::-1] # 反過來
五、走過整排
for n in nums:
print(n)
上一課的 for ... in 直接就通——清單就是一串東西。
完成的樣子
nums = [3, 1, 4, 1, 5]
print(nums[0])
print(len(nums))
nums.append(9)
print(nums)
print(nums[1:3])
for n in nums:
print(n)
換你了
讀進五個數字放進清單,印出最大值、最小值、平均。
⚠️ 提示:max(nums)、min(nums)、sum(nums) 都是內建的——
先查有沒有現成的,再自己寫迴圈。
這一課你做了什麼
- 你做了一個清單,並用位置取到了東西
- 你用
-1 拿到最後一個、用切片取了一段
- 你用
append 加東西,而知道 sort() 回傳 None
如果卡住了
| 你看到 |
多半是因為 |
IndexError |
位置超出範圍。五個東西最大是 [4] |
nums 變成 None |
寫了 nums = nums.sort()。sort() 是原地改的 |
| 改了一個清單另一個也變了 |
兩個名字指向同一份。要複本用 nums[:] |
| 切片少一個 |
含頭不含尾 |
在編輯器打開這一課 →