Semorphe

清單

一個名字,裝一整排東西。 · ⏱ 約 30 分鐘

你會學到三件事

  1. list 用方括號,裡面可以放任何東西
  2. 位置從 0 開始,而 -1 是最後一個
  3. 切片 [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] 會丟 IndexErrorPython 會攔你(很多語言不會)。

三、改和加

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) 都是內建的—— 先查有沒有現成的,再自己寫迴圈。

這一課你做了什麼

如果卡住了

你看到 多半是因為
IndexError 位置超出範圍。五個東西最大是 [4]
nums 變成 None 寫了 nums = nums.sort()sort() 是原地改的
改了一個清單另一個也變了 兩個名字指向同一份。要複本用 nums[:]
切片少一個 含頭不含尾
在編輯器打開這一課 →