本答案頁包含 Python Lambda、map 與 filter 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。
答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。
lambda 是什麼?
答案: 一個小型匿名函式
為什麼: lambda 用一個表達式定義函式。
Python 3 中 map 回傳什麼?
答案: 一個迭代器
為什麼: Python 3 的 map 是惰性的;要看全部值,需要用 list() 包起來。
這段程式碼會輸出什麼?
print(list(map(lambda x: x * 2, [1, 2])))答案: [2, 4]
為什麼: 每個值都變成兩倍,list() 會把 map 迭代器展開。
哪個表達式只保留大於 2 的數字?
答案: filter(lambda x: x > 2, nums)
為什麼: filter 的第一個參數是謂詞,第二個參數是可迭代物件。
補全匿名函式。
double = ____ n: n * 2
print(double(3))答案: lambda
為什麼: lambda 用來開始一個匿名函式表達式。
補全轉換,使 map 結果能以列表形式列印。
print(____(map(str, [1, 2])))答案: list
為什麼: list() 會消費 map 迭代器並建構列表。
補全判斷偶數的運算子。
nums = [1, 2, 3, 4]
print(list(filter(lambda n: n ____ 2 == 0, nums)))答案: %
為什麼: n % 2 == 0 在 n 是偶數時為真。
補全函式,讓每個數字求平方。
nums = [1, 2, 3]
print(list(map(____, nums)))答案: lambda n: n * n
為什麼: lambda 接收一個數字並回傳它的平方。
執行結果是什麼?
print((lambda n: n + 3)(4))答案: 7
為什麼: lambda 立即用 4 呼叫,結果是 7。
這段程式列印出什麼?
print(list(map(lambda s: s.upper(), ["a", "b"])))答案: ['A', 'B']
為什麼: 每個字串都轉為大寫,list() 顯示兩個結果。
程式碼的輸出結果是什麼?
print(list(filter(lambda n: n % 2 == 1, [1, 2, 3, 4])))答案: [1, 3]
為什麼: 奇數值是 1 和 3。
螢幕上會顯示什麼?
print(list(map(len, ["a", "bb", "ccc"])))答案: [1, 2, 3]
為什麼: 長度分別是 1、2、3。
先試一遍題目
打開 Python Lambda、map 與 filter 練習頁,用即時回饋回答同樣的 12 道題。