開始使用免費開始

Map() 與 lambda 函式

到目前為止,你已經用過 lambda 函式來撰寫簡短、單純的函式,也用它來重新定義具備簡單功能的函式。不過,lambda 函式最好的使用情境,是把這些簡單功能匿名地嵌入在較大的運算式裡。也就是說,與用 def 定義的函式不同,這些功能不會儲存在環境中。為了更清楚這個概念,你將在 map() 的情境中使用 lambda 函式。

回想影片中提到,map() 會將某個函式套用到一個物件上,例如串列。在這裡,你可以用 lambda 函式來定義 map() 用於處理該物件的函式。例如:

nums = [2, 4, 6, 8, 10]

result = map(lambda a: a ** 2, nums)

你可以看到,將數值 a 提升到 2 次方的 lambda 函式,與數字串列 nums 一起被傳入 map()。這次呼叫 map() 產生的「map 物件」被儲存在 result。接下來你會練習把 lambda 函式和 map() 搭配使用。在這題中,你會把先前練習中定義的 add_bangs() 函式的功能,套用到一個字串串列上。

本練習屬於課程

Python 函式入門

檢視課程

練習說明

  • map() 的呼叫中,傳入一個會把字串 '!!!' 接在字串 item 後面的 lambda 函式;同時傳入字串串列 spells。將得到的 map 物件指定給 shout_spells
  • shout_spells 轉為串列,並將該串列印出。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Create a list of strings: spells
spells = ["protego", "accio", "expecto patronum", "legilimens"]

# Use map() to apply a lambda function over spells: shout_spells
____ = map(____, ____)

# Convert shout_spells to a list: shout_spells_list
____

# Print the result
print(shout_spells_list)
編輯並執行程式碼