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

Python中的map、filter、reduce函数应用案例分析

发布时间:2023-06-14 05:00:40

在Python中,map、filter、reduce 是非常常用的三个函数。map 函数可以将一个函数映射到一个序列,filter 函数可以通过一个函数来确定序列中的哪些元素符合条件,reduce 函数可以对一个序列中的元素进行累积。这三个函数可以在Python中很多场景下都被使用。下面就介绍一下 Python 中的 map、filter、reduce 函数的具体应用案例。

一、Map函数应用案例

1. 将列表中的元素转为字符串类型

lst = [1,2,3,4,5]
res = list(map(str,lst)) # 将lst中的元素转为字符串类型
print(res)

输出结果如下:

['1', '2', '3', '4', '5']

2. 使用 lambda 表达式将列表中的元素进行平方

lst = [1,2,3,4,5]
res = list(map(lambda x:x**2,lst)) # 使用 lambda 表达式将列表中的元素进行平方
print(res)

输出结果如下:

[1, 4, 9, 16, 25]

3. 使用 map 函数将多个列表对应位置的元素相加

lst1 = [1,2,3,4,5]
lst2 = [5,4,3,2,1]
res = list(map(lambda x,y:x+y,lst1,lst2)) # 使用 map 函数将多个列表对应位置的元素相加
print(res)

输出结果如下:

[6, 6, 6, 6, 6]

二、Filter函数应用案例

1. 使用 filter 函数获取列表中的所有偶数

lst = [1,2,3,4,5,6,7,8,9]
res = list(filter(lambda x:x%2==0,lst)) # 使用 filter 函数获取列表中的所有偶数
print(res)

输出结果如下:

[2, 4, 6, 8]

2. 使用 filter 函数获取字符串列表中长度大于3的字符串

lst = ['apple','banana','pear','orange','watermelon']
res = list(filter(lambda x:len(x)>3,lst)) # 使用 filter 函数获取字符串列表中长度大于3的字符串
print(res)

输出结果如下:

['apple', 'banana', 'pear', 'orange', 'watermelon']

但是输出结果中为什么会有所有字符串呢?原因是 Python 中的空字符串也算作长度为0的字符串,所以需要再加一层判断:

lst = ['apple','banana','pear','orange','watermelon','']
res = list(filter(lambda x:len(x)>3 and x, lst))
print(res)

这里通过 and 运算符将长度判断和空字符串判断结合起来,过滤掉长度小于等于3的字符串和空字符串。输出结果如下:

['apple', 'banana', 'pear', 'orange', 'watermelon']

三、Reduce函数应用案例

1. 使用 reduce 函数计算列表中所有元素的和

from functools import reduce
lst = [1,2,3,4,5]
res = reduce(lambda x,y:x+y,lst) # 使用 reduce 函数计算列表中所有元素的和
print(res)

输出结果如下:

15

2. 使用 reduce 函数计算阶乘

from functools import reduce
n = 5
res = reduce(lambda x,y:x*y,range(1,n+1)) # 使用 reduce 函数计算阶乘
print(res)

输出结果如下:

120

这个例子中利用 lambda 函数和 reduce 函数,将 range(1,n+1) 中的每个元素递归计算,得出 n 的阶乘。

综上,map、filter、reduce 是 Python 中非常常用的三个函数,可以大大简化编程过程,并且在实现某些功能时也颇具优势。上述案例也展示了这三个函数的灵活性,希望能够对大家在日常编程中的学习有所帮助。