[Python教學] 進階:函數式程式設計-課後練習詳解

[Python教學] 進階:函數式程式設計-課後練習詳解

更新於 發佈於 閱讀時間約 7 分鐘

這篇文章是在解說上一篇文章:[Python教學] 進階:函數式程式設計 的課後練習的題目的解答,如果還沒看過上一篇文章的話建議可以先行前往閱讀!


題目 2:基本高階函數

寫一個高階函數 apply_operation,它接受兩個整數和一個函數作為參數,並返回兩個整數相加後的結果。

例如:apply_operation(4, 5, add) 應返回 9

def add(x, y):
return x + y

def apply_operation(x, y, func):
return func(x, y)

result = apply_operation(4, 5, add)
print(result) # Output: 9

題目 3:篩選字串

定義一個列表 words,裡面包含多個字串。使用 filter() 和 lambda 函數,篩選出字串長度大於 5 的單詞,並將結果儲存為新列表。

例如:words = ["apple", "banana", "grape", "cherry", "strawberry"],結果應為 ["banana", "strawberry"]

words = ["apple", "banana", "grape", "cherry", "strawberry"]
long_words = list(filter(lambda word: len(word) > 5, words))
print(long_words) # Output: ["banana", "strawberry"]

題目 4:平方運算

給定一個整數列表 numbers,使用 map() 和 lambda 函數將所有數字平方,並將結果存儲為新列表。

例如:numbers = [2, 3, 4],結果應為 [4, 9, 16]

numbers = [2, 3, 4]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers) # Output: [4, 9, 16]

題目 5:偶數總和

使用 filter()reduce() 計算列表中所有偶數的總和。

例如:numbers = [1, 2, 3, 4, 5, 6],結果應為 12

from functools import reduce

numbers = [1, 2, 3, 4, 5, 6]
even_sum = reduce(lambda x, y: x + y, filter(lambda x: x % 2 == 0, numbers))
print(even_sum) # Output: 12

題目 6:計算總和

給定一個包含正整數的列表,找出所有可以被 3 整除的數字,將它們的立方(次方 3)計算出來,最後使用 reduce() 將這些數字的總和求出。

例如:numbers = [3, 5, 6, 9, 12],結果應為 1536(即 33+63+93+1233^3 + 6^3 + 9^3 + 12^333+63+93+123)。

from functools import reduce

numbers = [3, 5, 6, 9, 12]
result = reduce(lambda x, y: x + y, map(lambda x: x ** 3, filter(lambda x: x % 3 == 0, numbers)))
print(result) # Output: 1536

題目 7:字串處理

寫一個函數 capitalize_and_filter,將包含多個字串的列表中的每個字串首字母轉成大寫,然後篩選掉所有包含 "a" 的字串。

例如:words = ["apple", "banana", "grape", "cherry", "blueberry"],結果應為 ["Grape", "Cherry"]

def capitalize_and_filter(words):
return list(filter(lambda word: "a" not in word.lower(), map(lambda word: word.capitalize(), words)))

words = ["apple", "banana", "grape", "cherry", "blueberry"]
filtered_words = capitalize_and_filter(words)
print(filtered_words) # Output: ["Grape", "Cherry"]

題目 8:數字轉換

寫一個函數 int_to_string_with_filter,接受一個整數列表,將每個偶數轉換為字串,然後將它們儲存在新列表中。

例如:int_to_string_with_filter([1, 2, 3, 4, 5, 6]) 的輸出應為 ["2", "4", "6"]

def int_to_string_with_filter(numbers):
return list(map(str, filter(lambda x: x % 2 == 0, numbers)))

numbers = [1, 2, 3, 4, 5, 6]
even_strings = int_to_string_with_filter(numbers)
print(even_strings) # Output: ["2", "4", "6"]

題目 9:字串長度總和

使用 map()reduce() 來計算一組字串列表中所有字串長度的總和。

例如:words = ["apple", "banana", "grape"],應返回 16

from functools import reduce

words = ["apple", "banana", "grape"]
total_length = reduce(lambda x, y: x + y, map(len, words))
print(total_length) # Output: 16


avatar-img
追極光的北極熊|軟體工程師的小天地
6會員
117內容數
歡迎來到我的部落格!這裡記錄了軟體工程師的日常生活點滴,並分享程式設計與演算法的實用教學。無論你是初學者還是有經驗的開發者,都能在這裡找到深入淺出的技術解析與實戰技巧。此外,我也會分享工作中的心路歷程與學習心得,讓你不僅學到技術,更能瞭解軟體開發的實際應用與挑戰。希望透過這個平台,能與你共同成長,激發對技術的熱情!
留言
avatar-img
留言分享你的想法!
當我們開發程式時,功能能正常運作固然重要,但在資料量變大或執行時間變長時,效能就成為不可忽視的一環。尤其在 Web 應用、資料分析或科學運算中,程式跑得快與否,直接影響使用者體驗與系統成本。
嘿,大家好!上篇教學文章我們做出了一個待辦事項清單,已經有點小工具的感覺了吧?今天我們要再升級,來做個「簡單記事本」。這個專案不只可以寫東西,還能存檔、讀檔,甚至換字體大小,感覺就像自己寫了個迷你軟體!
嘿,大家好!走到這一步,我們已經玩過 Tkinter 的基本招式、佈局、事件處理,還搞了些進階元件,應該有點信心了吧?今天我們要把這些功夫練成一套連招,來做個實用的「待辦事項清單」(To-Do List),順便聊聊怎麼把程式寫得更漂亮、更好用。準備好了嗎?這就上場啦!
當我們開發程式時,功能能正常運作固然重要,但在資料量變大或執行時間變長時,效能就成為不可忽視的一環。尤其在 Web 應用、資料分析或科學運算中,程式跑得快與否,直接影響使用者體驗與系統成本。
嘿,大家好!上篇教學文章我們做出了一個待辦事項清單,已經有點小工具的感覺了吧?今天我們要再升級,來做個「簡單記事本」。這個專案不只可以寫東西,還能存檔、讀檔,甚至換字體大小,感覺就像自己寫了個迷你軟體!
嘿,大家好!走到這一步,我們已經玩過 Tkinter 的基本招式、佈局、事件處理,還搞了些進階元件,應該有點信心了吧?今天我們要把這些功夫練成一套連招,來做個實用的「待辦事項清單」(To-Do List),順便聊聊怎麼把程式寫得更漂亮、更好用。準備好了嗎?這就上場啦!