高阶函数(map,reduce,filter,sorted),匿名函数lambda

1.匿名函数lambda

匿名函数顾名思义不需要命名的函数。
lambda函数的形式:

'''
lambda 参数1,参数2,:表达式
其中参数可以有多个,函数结果返回表达式的计算结果,
表达式中不能含有return,表达式本身就是返回结果
'''
f = lambda x:x**2
print(f(2))   # 4
f2 = lambda x,y,z:x+y+z
print(f2(1,2,3))  # 6

示例:

st = [lambda x:x*i for i in range(3)]
print(lst)  # lst是一个含有三个匿名函数的列表,此时每一个lambda函数都没有进行调用。

for i in lst:
    print(i(1))   # 当开始循环调用时全局变量i=2,所以每次调用打印结果一样
"""
输出结果:
2
2
2
"""

匿名函数可以用于以下的高阶函数,从而使代码更加简洁

2.高阶函数

高阶函数即可以接收函数作为参数的函数。

2.1map

map(函数,可迭代对象)
map函数有两个参数第一个是函数,第二个是可迭代对象,其功能是将可迭代对象中的每一个元素都做第一个参数–函数的操作,然后将结果返回一个迭代器。

# 计算列表中每个元素的平方根
lst = [0, 4, 9, 25]
result = list(map(sqrt, lst))
print(result)     # [0.0, 2.0, 3.0, 5.0]

# 计算列表中每个元素*2
result = list(map(lambda x:x*2, lst))
print(result)  # [0, 8, 18, 50]

2.2filter

filter(函数, 可迭代对象)
filter函数为过滤函数,将可迭代对象中的元素一一放入第一个参数函数中进行计算,结果布尔值为True则保留该元素,结果为False则过滤该元素

lst = [0, 4, 9, 25]
lst = filter(lambda x: x%2==0, lst)
print(lst)  # <filter object at 0x000001BEDE348A58>
print(list(lst))  # [0, 4]

2.3reduce

reduce(函数,可迭代对象)
reduce函数首先将可迭代对象中前两个元素入参在函数中进行计算,再将其结果和可迭代对象第三个元素入参进行计算

from functools import reduce
result = reduce(lambda x,y:x+y, [1,2,3,4])
print(result)  # 10
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值