Python常用函数:map()和reduce()的作用及用法
Python中的map()和reduce()函数是函数式编程中经常使用的函数,它们可以简化我们的代码并提高效率。下面就来介绍一下这两个函数的作用及用法。
1. map()函数
map()函数用于对一个序列(如列表、元组等)中的每一个元素进行操作,使操作后的结果构成一个新的序列。它的语法格式如下:
map(function, iterable, ...)
其中,function是一个函数,可以是内置函数或自定义函数,iterable是一个可迭代的序列,如列表、元组等。
例如,在一个列表中每个元素乘以2并返回一个新的列表:
a = [1, 2, 3, 4, 5] b = map(lambda x: x*2, a) print(list(b)) # [2, 4, 6, 8, 10]
这里用了lambda表达式,也可以自定义函数:
def double(x):
return x*2
a = [1, 2, 3, 4, 5]
b = map(double, a)
print(list(b)) # [2, 4, 6, 8, 10]
如果有多个可迭代对象,map()函数会以 个序列为基准,将其他序列中的元素按位置分别传入函数中,如:
a = [1, 2, 3] b = [4, 5, 6] c = [7, 8, 9] print(list(map(lambda x, y, z: x+y+z, a, b, c))) # [12, 15, 18]
2. reduce()函数
reduce()函数用于对一个序列(如列表、元组等)中的元素进行累积操作,返回一个值。它的语法格式如下:
reduce(function, iterable[, initializer])
其中,function是一个函数,必须接收两个参数;iterable是一个可迭代的序列,如列表、元组等;initializer是可选的,代表初始值。
例如,在一个列表中求所有元素的和:
from functools import reduce a = [1, 2, 3, 4, 5] b = reduce(lambda x, y: x+y, a) print(b) # 15
这里lambda表达式中x和y分别表示上次运算的结果和本次参加运算的元素。
如果使用initializer,则初始值为initializer,之后的运算依次为运算结果和列表元素:
a = [1, 2, 3, 4, 5] b = reduce(lambda x, y: x+y, a, 10) print(b) # 25
这里初始值为10,所以最终结果为25(10+1+2+3+4+5)。
需要注意的是,reduce()函数在Python 3中已经被放到了functools模块中,需要先导入该模块才能使用。
以上就是map()和reduce()函数的作用及用法的介绍,希望对大家有所帮助。
