匿名函数与高阶函数

一、匿名函数lambda的定义:

f = lambda 参数:返回值

f = lambda x, y: x + y

我们对比常规的函数定义:

def add(x, y):
    print("this is add")
    return x + y

我们可以看到二者的区别:
1,匿名函数是没有函数的,而常规的函数有函数名。

2,匿名函数只有传参与返回值,而常规函数可以有其他语句或模块。

 

二、lambda的实质及调用

f = lambda x, y: x + y
print(f)

执行结果:

<function <lambda> at 0x000001BC865661F0>

调用lambda函数可以用()来调用:

f = lambda x, y: x + y
print(f(3, 4))

执行结果: 7

 

三、匿名函数的应用场景

lambda函数通常与高阶函数配合使用,可以大大简化代码。

sorted()

my_list = [1, 3, 5, 6, 0, 23, 2]
my_list_dict = [{"name": "tom", "age": 18},
                {"name": "jerry", "age": 22},
                {"name": "lucy", "age": 30},
                {"name": "jordan", "age": 24}
                ]

l = sorted(my_list_dict, key=lambda x: x["age"], reverse=True)
print(l)

执行结果:

[{'name': 'lucy', 'age': 30}, {'name': 'jordan', 'age': 24}, {'name': 'jerry', 'age': 22}, {'name': 'tom', 'age': 18}]

我们可以看到,对my_list_dict进行排序时,是根据age键对应的值排序。

map():

my_list = [1, 3, 5, 6, 0, 23, 2]


s = map(lambda x: x**2, my_list)
print(type(s))
print(list(s))

执行结果:

<class 'map'>
[1, 9, 25, 36, 0, 529, 4]

map():映射。 对传入的可迭代对象进行批量同操作处理。

map第一个参数为 function,后面可以跟多个可迭代对象。

reduce():

from functools import reduce

l = [1, 3, 4, 22, 0, 2]

s = reduce(lambda x, y: x + y, l)
print(s)

reduce():规约,会对可传入的序列进行逐个运算。

执行结果:32

filter():

l = [1, 3, 4, 22, 0, 2]

s = filter(lambda x: x % 2 == 0, l)
print(list(s))

执行结果:

[4, 22, 0, 2]

 

高阶函数对于数据的处理,提取有一定优势,需要好好掌握

 

posted @ 2022-03-10 11:04  Target_L  阅读(46)  评论(0)    收藏  举报