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

Python常用函数:map()和reduce()的作用及用法

发布时间:2023-06-14 04:19:31

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()函数的作用及用法的介绍,希望对大家有所帮助。