2024-11-18|閱讀時間 ‧ 約 0 分鐘

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

這篇文章是在解說上一篇文章:[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


分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.