欢迎访问宙启技术站
智能推送

Python高阶函数:lambda函数、map()和filter()函数的高级用法详解

发布时间:2023-06-01 01:49:12

Python高阶函数是指能够接收其他函数作为参数,或者是能够将函数作为返回值的函数称之为高阶函数。而在这些高阶函数中,lambda函数、map()和filter()函数是最为常见和实用的。

1. lambda函数

lambda函数是一种匿名函数,可以用来快速定义简单的函数,它的定义形式如下:

lambda argument_list: expression

其中,argument_list是函数参数列表,expression是函数返回值表达式。例如,我们想要定义一个求和函数,可以这样写:

sum = lambda x, y: x + y
print(sum(1, 2))  # 输出3

lambda函数常见的应用场景是在需要对序列或集合进行简单的操作时,可以传入lambda函数作为参数,例如:

lst = [1, 2, 3, 4, 5]
new_lst = list(map(lambda x: x * 2, lst))
print(new_lst)  # 输出[2, 4, 6, 8, 10]

这里我们使用了map()函数,它可以将一个函数应用于序列中的每个元素,并将结果作为一个新的序列返回。

2. map()函数

map()函数是Python内置的高阶函数,它接收两个参数:一个函数和一个序列,它会将函数应用于序列中的每个元素,并将结果作为一个新的序列返回。map()函数的定义形式如下:

map(function, iterable...)

其中,function是一个函数,iterable是一个序列,可以是列表、元组等。例如,我们想要将一个列表中的所有元素平方并返回一个新的列表,可以这样写:

lst = [1, 2, 3, 4, 5]
new_lst = list(map(lambda x: x ** 2, lst))
print(new_lst)  # 输出[1, 4, 9, 16, 25]

map()函数也可以接收多个序列作为参数,在这种情况下,函数应该接收相应数量的参数,例如:

lst1 = [1, 2, 3]
lst2 = [4, 5, 6]
new_lst = list(map(lambda x, y: x + y, lst1, lst2))
print(new_lst)  # 输出[5, 7, 9]

3. filter()函数

filter()函数也是Python内置的高阶函数,它接收两个参数:一个函数和一个序列,它会将函数应用于序列中的每个元素,然后返回一个新的序列,其中包含原序列中所有符合条件的元素。filter()函数的定义形式如下:

filter(function, iterable)

其中,function是一个函数,iterable是一个序列,可以是列表、元组等。例如,我们想要从一个列表中筛选出所有的偶数并返回一个新的列表,可以这样写:

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_lst = list(filter(lambda x: x % 2 == 0, lst))
print(new_lst)  # 输出[2, 4, 6, 8, 10]

filter()函数的返回值也可以是一个迭代器对象,例如:

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_lst = filter(lambda x: x % 2 == 0, lst)
for i in new_lst:
    print(i)
# 输出2
# 输出4
# 输出6
# 输出8
# 输出10

以上就是lambda函数、map()和filter()函数的高级用法详解。在实际的开发过程中,这些高阶函数经常会被用到,掌握它们的使用方法可以让我们的代码变得更加简洁和优雅。