Map() 与 lambda 函数
到目前为止,您已经用过 lambda 函数来编写简短、简单的函数,也用它来重新定义具有简单功能的函数。不过,lambda 函数最好的用法,是在需要将这些简单功能以匿名方式嵌入到更大的表达式中时。也就是说,与使用 def 定义的函数不同,这种功能不会存储在环境中。为了更好地理解这个概念,您将把 lambda 函数与 map() 函数结合使用。
回顾视频内容,map() 会将某个函数应用到一个对象上,例如列表。在这里,您可以用 lambda 函数来定义 map() 用于处理对象的函数。例如:
nums = [2, 4, 6, 8, 10]
result = map(lambda a: a ** 2, nums)
如上所示,一个将值 a 提升到 2 次幂的 lambda 函数,与数字列表 nums 一起传入 map()。对 map() 的调用会返回一个映射对象(map object),并存储在 result 中。接下来,您将练习在 map() 中使用 lambda 函数。在本练习中,您会把之前练习中定义的 add_bangs() 函数的功能映射到一个字符串列表上。
本练习是课程的一部分
Python 函数入门
练习说明
- 在对
map()的调用中,传入一个将字符串'!!!'连接到字符串item后的 lambda 函数;同时传入字符串列表spells。将返回的映射对象赋给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)