清單
一個名字,裝一整排東西。 · ⏱ 約 30 分鐘
你會學到三件事
list 用方括號,裡面可以放任何東西
- 位置從 0 開始,而
-1 是最後一個
- 切片
[a:b] 取一段
開始之前
想記住五個分數,可以用五個變數。但那樣沒辦法用迴圈處理,因為每個名字都不一樣。
🟢 先把編輯器打開,跟著下面一起做:跟著做
一、做一個
照著打上這一行:
方括號、逗號隔開。裡面可以放不同型別,[1, "a", True] 是合法的,而實務上通常放同一種。
積木盤上它叫「串列」——list 的中文說法。
🔎 這一段是試一下——打了看結果就好,不要留在程式裡。
1print(len(nums)) # 5 ← 有幾個
len 那顆積木寫著「… 的長度」。
二、拿第幾個
要拿其中一個,用方括號加上編號:
🔎 這一段是試一下——打了看結果就好,不要留在程式裡。
1print(nums[0]) # 3 ← 第一個2print(nums[4]) # 5 ← 第五個3print(nums[-1]) # 5 ← 🟢 最後一個4print(nums[-2]) # 1 ← 倒數第二個
3 1 4 1 5
[0] [1] [2] [3] [4]
[-5] [-4] [-3] [-2] [-1]
⚠️ 位置從 0 開始,所以五個東西的最大位置是 4。再往後的 nums[5] 會丟
IndexError,Python 會攔你,而很多語言不會。
Python 還有負索引:nums[-1] 就是最後一個,不用寫 nums[len(nums) - 1]。
三、改和加
改一個、加一個:
1nums[0] = 99 # 改第一個2nums.append(9)3print(nums) # [99, 1, 4, 1, 5, 9]
append 那顆寫著「在 … 末端加入 …」。
| 寫法 |
做什麼 |
x.append(v) |
最後面加一個 |
x.insert(i, v) |
在位置 i 插入 |
x.pop() |
拿掉最後一個並回傳它 |
x.remove(v) |
拿掉第一個等於 v 的 |
x.sort() |
原地排序 |
⚠️ 那個「點」的寫法是新的,唸成「的」:nums.append(...) 就是「nums 的 append」。
點的左邊是誰,右邊是叫它做什麼。之後會一直出現。
⚠️ nums.sort() 改的是原本那個,回傳 None:
nums = nums.sort() # 🔴 nums 變成 None
nums.sort() # ✅
sorted(nums) # ✅ 這個才是回傳新的
四、切片
要一次拿好幾個,中間加一個冒號:
🔎 這一段是試一下——打了看結果就好,不要留在程式裡。
1print(nums[1:3]) # [1, 4] ← 位置 1 到 2
⚠️ 含頭不含尾,又是那個約定。
切片那顆積木有第三個格子「每次跳 …」,那是步長(nums[::2] 的 2)。
🔎 這一段是試一下——打了看結果就好,不要留在程式裡。
1nums[:3] # 前三個2nums[2:] # 從位置 2 到最後3nums[:] # 整份【複本】4nums[::-1] # 反過來
五、走過整排
走過每一個,用 for:
1for n in nums:2 print(n)
上一課的 for ... in 直接就通,因為清單就是一串東西。
完成的樣子
這一課的參考做法——程式碼每一行的號碼,就印在對應的那塊積木上。
1nums = [3, 1, 4, 1, 5]2print(nums[0])3print(len(nums))4nums.append(9)5print(nums)6print(nums[1:3])7for n in nums:8 print(n)
把積木打散,自己排回去:排回去:把剛才那支程式的積木排好
換你了
讀進五個數字放進清單,印出最大值、最小值、平均。
⚠️ 提示:max(nums)、min(nums)、sum(nums) 都是內建的。
先查有沒有現成的,再自己寫迴圈。
到編輯器做這一題:練習:最大值、最小值、平均
做一個
1 到 5 號五位候選人。先讀票數 n,再讀 n 張票。
印出每個人的得票(號碼 票數,五行),最後印 當選 X。
⚠️ 裁判餵的是 7 張票:3 1 3 5 3 1 2。
🔴 先想一下如果用五個變數要寫成什麼樣子,再回頭看清單版,那個差別就是這一課。
平手怎麼辦沒有規定,你自己決定,再跟旁邊的人比一下規則。
到編輯器做這一題:做一個:投票統計
這一課你做了什麼
- 你做了一個清單,並用位置取到了東西
- 你用
-1 拿到最後一個、用切片取了一段
- 你用
append 加東西,而知道 sort() 回傳 None
如果卡住了
| 你看到 |
多半是因為 |
IndexError |
位置超出範圍。五個東西最大是 [4] |
nums 變成 None |
寫了 nums = nums.sort()。sort() 是原地改的 |
| 改了一個清單另一個也變了 |
兩個名字指向同一份。要複本用 nums[:] |
| 切片少一個 |
含頭不含尾 |
在編輯器打開這一課 →