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