[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


歡迎來到我的部落格!這裡記錄了軟體工程師的日常生活點滴,並分享程式設計與演算法的實用教學。無論你是初學者還是有經驗的開發者,都能在這裡找到深入淺出的技術解析與實戰技巧。此外,我也會分享工作中的心路歷程與學習心得,讓你不僅學到技術,更能瞭解軟體開發的實際應用與挑戰。希望透過這個平台,能與你共同成長,激發對技術的熱情!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
在這篇文章中,我們將深入介紹 Python 中的高階函數、匿名函數(lambda)、以及一些常用的高階函數工具如 map()、filter()、reduce()。這些概念和工具讓程式碼更加精簡並具有較高的可讀性和靈活性,是編寫 Python 程式碼的重要技巧。
在這篇文章中,我們將介紹如何在 Python 中進行除錯與測試。初學者可以利用 print() 進行簡單除錯,進階則可以學習 logging 模組進行更詳細的記錄,並利用 unittest 和 pytest 等單元測試工具進行自動化測試,以確保程式的穩定性。
Python 模組和套件系統讓我們的程式可以變得更高效且具備更多功能。本篇文章將深入介紹 Python 的模組,包括模組的匯入與使用、Python 的內建模組,以及如何透過 pip 安裝第三方套件,讓您的開發流程更加便利。
Python 中的錯誤處理機制十分靈活,能讓我們捕捉、管理並處理程式中可能出現的各種錯誤和異常情況。本文將深入介紹 Python 中的錯誤處理語法,包括 try-except 結構、raise 用法以及如何自訂例外類別,讓程式更具容錯性和健壯性。
Python 的物件導向程式設計 (Object-Oriented Programming, OOP) 是其最強大和靈活的特性之一。通過 OOP 的思想,我們可以組織、抽象並簡化程式碼結構,以達到更好的可維護性和可擴展性。
Python 是一個功能強大的程式語言,提供了非常直觀的檔案處理方式。無論是處理數據檔案、讀取日誌文件,還是生成報表,檔案讀寫操作都是程式開發中的重要環節。這篇文章將帶你深入了解如何使用 Python 操作檔案,包括讀取和寫入、檔案模式選擇以及上下文管理器的使用。
在這篇文章中,我們將深入介紹 Python 中的高階函數、匿名函數(lambda)、以及一些常用的高階函數工具如 map()、filter()、reduce()。這些概念和工具讓程式碼更加精簡並具有較高的可讀性和靈活性,是編寫 Python 程式碼的重要技巧。
在這篇文章中,我們將介紹如何在 Python 中進行除錯與測試。初學者可以利用 print() 進行簡單除錯,進階則可以學習 logging 模組進行更詳細的記錄,並利用 unittest 和 pytest 等單元測試工具進行自動化測試,以確保程式的穩定性。
Python 模組和套件系統讓我們的程式可以變得更高效且具備更多功能。本篇文章將深入介紹 Python 的模組,包括模組的匯入與使用、Python 的內建模組,以及如何透過 pip 安裝第三方套件,讓您的開發流程更加便利。
Python 中的錯誤處理機制十分靈活,能讓我們捕捉、管理並處理程式中可能出現的各種錯誤和異常情況。本文將深入介紹 Python 中的錯誤處理語法,包括 try-except 結構、raise 用法以及如何自訂例外類別,讓程式更具容錯性和健壯性。
Python 的物件導向程式設計 (Object-Oriented Programming, OOP) 是其最強大和靈活的特性之一。通過 OOP 的思想,我們可以組織、抽象並簡化程式碼結構,以達到更好的可維護性和可擴展性。
Python 是一個功能強大的程式語言,提供了非常直觀的檔案處理方式。無論是處理數據檔案、讀取日誌文件,還是生成報表,檔案讀寫操作都是程式開發中的重要環節。這篇文章將帶你深入了解如何使用 Python 操作檔案,包括讀取和寫入、檔案模式選擇以及上下文管理器的使用。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
ITS python認證內容含蓋六大主題
Thumbnail
Python 提供了一系列內建函式,其中一部分涉及數學和數學操作。 以下是一些常用的內建函式和數學相關的函式: 基本數學運算: abs(x): 返回 x 的絕對值。 result = abs(-5) print(result) # 輸出: 5 max(iterable) 和 min(
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
ITS python認證內容含蓋六大主題
Thumbnail
Python 提供了一系列內建函式,其中一部分涉及數學和數學操作。 以下是一些常用的內建函式和數學相關的函式: 基本數學運算: abs(x): 返回 x 的絕對值。 result = abs(-5) print(result) # 輸出: 5 max(iterable) 和 min(