Python 中的函数式编程工具包括map
、filter
和reduce
。下面是对这三个函数的简要介绍:
map
函数:map
函数用于将一个函数应用于一个可迭代对象(如列表、元组等)的每个元素,并返回一个包含应用函数后的结果的迭代器。map
函数的语法如下:
map(function, iterable, ...)
其中,function
是用于应用的函数对象,iterable
是可迭代对象,而...
是可选的,表示要应用函数的第二个可迭代对象。下面是一个示例:
def square(x):
return x ** 2
numbers = (1, 2, 3, 4, 5)
squared_numbers = map(square, numbers)
print(list(squared_numbers))
在上面的示例中,我们定义了一个名为square
的函数,它用于计算一个数的平方。然后,我们使用map
函数将square
函数应用于numbers
列表中的每个元素,并将结果存储在squared_numbers
迭代器中。最后,我们使用list
函数将迭代器转换为列表,并打印出结果。
filter
函数:filter
函数用于过滤序列,它接收一个函数和一个序列,然后根据函数的返回值(True 或 False)决定元素的保留与丢弃。filter
函数的语法如下:
filter(function, iterable)
其中,function
是用于过滤的函数对象,iterable
是要过滤的可迭代对象。下面是一个示例:
def is_odd(x):
return x % 2 != 0
numbers = (1, 2, 3, 4, 5)
odd_numbers = filter(is_odd, numbers)
print(list(odd_numbers))
在上面的示例中,我们定义了一个名为is_odd
的函数,它用于判断一个数是否为奇数。然后,我们使用filter
函数将is_odd
函数应用于numbers
列表中的每个元素,并将返回值为True
的元素存储在odd_numbers
迭代器中。最后,我们使用list
函数将迭代器转换为列表,并打印出结果。
reduce
函数:reduce
函数用于对一个可迭代对象中的元素进行累积计算。在 Python 3中,reduce
函数位于functools
模块中,使用前需要先导入该模块。reduce
函数的语法如下:
from functools import reduce
reduce(function, iterable, initializer)
其中,function
是用于计算累积值的函数,iterable
是要累积的可迭代对象,而initializer
是可选的,表示初始值。下面是一个示例:
from functools import reduce
def add(x, y):
return x + y
numbers = (1, 2, 3, 4, 5)
sum_numbers = reduce(add, numbers)
print(sum_numbers)
在上面的示例中,我们定义了一个名为add
的函数,它用于计算两个数的和。然后,我们使用reduce
函数将add
函数应用于numbers
列表中的每个元素,并将初始值设置为0。最后,reduce
函数返回累积计算的结果,并将其存储在sum_numbers
变量中。