1. map将一个函数映射到一个输入列表的所有元素上
map(function_to_apply, list_of_inputs) # 结构
list(map((lambda x: x + 3), [1, 2, 3, 4])) # [4, 5, 6, 7]
list(map(pow, [1, 2, 3], [2, 3, 4])) # 1 ** 2, 2 ** 3, 3 ** 4
# Create a list of strings: spells
spells = ["protego", "accio", "expecto patronum", "legilimens"]
# Use map() to apply a lambda function over spells: shout_spells
shout_spells = [map(lambda item: item + '!!!', spells)]
print(shout_spells) # output: ['protego!!!', 'accio!!!', 'expecto patronum!!!', 'legilimens!!!']
2. filter过滤列表中的元素,并且返回一个由所有符合要求的元素所构成的列表,符合要求即函数映射到该元素时返回值为True
list(filter((lambda x: x > 0), range(-5, 5))) # [1, 2, 3, 4]
# Create a list of strings: fellowship
fellowship = ['frodo', 'samwise', 'merry', 'pippin', 'aragorn', 'boromir', 'legolas', 'gimli', 'gandalf']
# Use filter() to apply a lambda function over fellowship: result
result_list = [filter(lambda member: len(member) > 6, fellowship)]
print(result_list) # ['samwise', 'aragorn', 'boromir', 'legolas', 'gandalf']
3. reduce对每个元素都应用函数并运行到最后结果
python3 中,reduce位于functools模块下
from functools import reduce
reduce((lambda x, y: x + y), [1, 2, 3, 4]) # 10
reduce((lambda x, y: x + y), [1, 2, 3, 4]) # 24
# 序列中第一个元素初始化起始值
# Import reduce from functools
from functools import reduce
# Create a list of strings: stark
stark = ['robb', 'sansa', 'arya', 'brandon', 'rickon']
# Use reduce() to apply a lambda function over stark: result
result = reduce(lambda item1, item2: item1 + item2, stark)
print(result) # robbsansaaryabrandonrickon