Python高阶函数:map、filter和reduce的作用和用法
Python中的高阶函数是能够接受函数作为参数和返回函数的函数。其中,map、filter和reduce是Python中应用广泛的高阶函数。
1. map函数
map函数接收两个参数, 个参数是函数 func,第二个参数是一个可迭代对象 iterable,将func作用于iterable的每一个元素上,将结果作为一个新的可迭代对象返回。
示例:
def square(x):
return x ** 2
lst = [1, 2, 3, 4, 5]
squared_lst = list(map(square, lst))
print(squared_lst)
输出结果为:[1, 4, 9, 16, 25]
上面的代码中,我们定义了一个square函数,用来求每个元素的平方。然后定义一个列表lst,最后使用map将square函数作用于lst中每一个元素上,将结果作为一个新列表返回。
2. filter函数
filter函数也接收两个参数, 个参数是一个函数 func,第二个参数是一个可迭代对象 iterable,将func作用于iterable的每一个元素上,如果函数返回True,则将元素加入到一个新的可迭代对象中返回。
示例:
def is_even(x):
return x % 2 == 0
lst = [1, 2, 3, 4, 5]
filtered_lst = list(filter(is_even, lst))
print(filtered_lst)
输出结果为:[2, 4]
上面的代码中,我们定义了一个is_even函数,用来判断一个数字是否为偶数。然后定义了一个列表lst,最后使用filter将is_even函数作用于lst中每一个元素上,将返回值为True的元素加入到一个新列表中返回。
3. reduce函数
reduce函数是Python标准库functools模块中的函数,需要先导入该模块。reduce函数接收两个参数, 个参数是一个函数 func,第二个参数是一个可迭代对象 iterable,该函数将iterable中的元素传入二元函数中进行累积,最终返回累积结果。
示例:
from functools import reduce
def add(x, y):
return x + y
lst = [1, 2, 3, 4, 5]
sum_lst = reduce(add, lst)
print(sum_lst)
输出结果为:15
上面的代码中,我们定义了一个add函数,用来将两个数字相加。然后定义了一个列表lst,最后使用reduce将两个元素依次传入add函数中进行累积。
总结
map、filter和reduce是Python中高阶函数的代表,它们能够更方便地进行列表处理和求值。其中,map函数将一个函数应用于列表中的每个元素,返回一个新的列表;filter函数在列表中过滤出符合特定条件的元素,返回一个新的列表;reduce函数将一个函数应用于列表的累积结果,返回最终的累积结果。
