答案頁 · 12 道題

Python Lambda、map 與 filter練習答案

本頁彙整 Python Lambda、map 與 filter 的 12 道練習。先做練習頁,再回到這裡核對準確答案和原因。

快速答案

本答案頁包含 Python Lambda、map 與 filter 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。

答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。

01 · 選擇題

lambda 是什麼?

  1. 帶條件的迴圈
  2. 一個小型匿名函式正確答案
  3. 數學模組
  4. 一種列表

答案: 一個小型匿名函式

為什麼: lambda 用一個表達式定義函式。

02 · 選擇題

Python 3 中 map 回傳什麼?

  1. 一個迭代器正確答案
  2. 一個字典
  3. 一個字串
  4. 一個列表

答案: 一個迭代器

為什麼: Python 3 的 map 是惰性的;要看全部值,需要用 list() 包起來。

03 · 選擇題

這段程式碼會輸出什麼?

print(list(map(lambda x: x * 2, [1, 2])))
  1. [2, 4]正確答案
  2. [1, 2]
  3. [2, 2]
  4. [1, 4]

答案: [2, 4]

為什麼: 每個值都變成兩倍,list() 會把 map 迭代器展開。

04 · 選擇題

哪個表達式只保留大於 2 的數字?

  1. map(lambda x: x > 2, nums)
  2. list(lambda x: x > 2, nums)
  3. filter(lambda x: x > 2, nums)正確答案
  4. filter(nums, lambda x: x > 2)

答案: filter(lambda x: x > 2, nums)

為什麼: filter 的第一個參數是謂詞,第二個參數是可迭代物件。

05 · 填空題

補全匿名函式。

double = ____ n: n * 2
print(double(3))

答案: lambda

為什麼: lambda 用來開始一個匿名函式表達式。

06 · 填空題

補全轉換,使 map 結果能以列表形式列印。

print(____(map(str, [1, 2])))

答案: list

為什麼: list() 會消費 map 迭代器並建構列表。

07 · 填空題

補全判斷偶數的運算子。

nums = [1, 2, 3, 4]
print(list(filter(lambda n: n ____ 2 == 0, nums)))

答案: %

為什麼: n % 2 == 0 在 n 是偶數時為真。

08 · 填空題

補全函式,讓每個數字求平方。

nums = [1, 2, 3]
print(list(map(____, nums)))

答案: lambda n: n * n

為什麼: lambda 接收一個數字並回傳它的平方。

09 · 輸出預測

執行結果是什麼?

print((lambda n: n + 3)(4))

答案: 7

為什麼: lambda 立即用 4 呼叫,結果是 7。

10 · 輸出預測

這段程式列印出什麼?

print(list(map(lambda s: s.upper(), ["a", "b"])))

答案: ['A', 'B']

為什麼: 每個字串都轉為大寫,list() 顯示兩個結果。

11 · 輸出預測

程式碼的輸出結果是什麼?

print(list(filter(lambda n: n % 2 == 1, [1, 2, 3, 4])))

答案: [1, 3]

為什麼: 奇數值是 1 和 3。

12 · 輸出預測

螢幕上會顯示什麼?

print(list(map(len, ["a", "bb", "ccc"])))

答案: [1, 2, 3]

為什麼: 長度分別是 1、2、3。

先試一遍題目

打開 Python Lambda、map 與 filter 練習頁,用即時回饋回答同樣的 12 道題。

練習本課