函数式编程工具:map, filter和reduce

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值