简单了解python filter、map、reduce的区别

Python是一门高级编程语言 , 拥有丰富的内置函数和标准库 , 其中filter、map和reduce是三个常用的函数 。它们都可以对序列进行处理 , 但在具体的应用场景中 , 它们各自有不同的特点和用途 。一、filter
filter函数用于过滤序列中的元素 , 返回一个新的序列 , 它只保留满足条件的元素 。filter函数的语法如下:

简单了解python filter、map、reduce的区别

文章插图
filter(function, sequence)
其中 , function是一个判断函数 , 用于对sequence中的每个元素进行判断 , 如果返回True , 则保留该元素 , 否则删除 。
例如 , 我们定义一个函数用于判断一个数是否为偶数:
def is_even(n):
return n % 2 == 0
然后使用filter函数对一个序列进行过滤:
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
evens = list(filter(is_even, nums))
print(evens)
输出结果为[2, 4, 6, 8, 10] , 即只保留了偶数 。
二、map
map函数用于对序列中的每个元素进行操作 , 返回一个新的序列 。它的语法如下:
map(function, sequence)
其中 , function是一个操作函数 , 用于对sequence中的每个元素进行操作 , 返回一个新的值 。
例如 , 我们定义一个函数用于将一个数平方:
def square(n):
return n ** 2
然后使用map函数对一个序列进行操作:
nums = [1, 2, 3, 4, 5]
squares = list(map(square, nums))
print(squares)
输出结果为[1, 4, 9, 16, 25] , 即对每个数进行了平方操作 。
三、reduce
reduce函数用于对序列中的元素进行累积操作 , 返回一个单一的值 。它的语法如下:
reduce(function, sequence)
其中 , function是一个操作函数 , 用于对sequence中的每个元素进行累积操作 , 返回一个新的值 。
例如 , 我们定义一个函数用于对一个序列进行求和:
from functools import reduce
def add(x, y):
return x + y
nums = [1, 2, 3, 4, 5]
sum = reduce(add, nums)
print(sum)
输出结果为15 , 即对序列中的所有元素进行了求和操作 。
四、区别与联系
从使用方式上来说 , filter、map和reduce都是函数式编程中常见的操作 , 用于对序列进行处理 。它们都接受一个操作函数和一个序列作为参数 , 但它们的返回值有所不同 。
filter返回一个新的序列 , 其中只保留满足条件的元素 。
map返回一个新的序列 , 其中每个元素都被操作函数处理过 。
reduce返回一个单一的值 , 其中对序列中的元素进行了累积操作 。
从应用场景上来说 , filter常用于过滤序列中的元素 , 例如筛选出偶数、筛选出大于10的数等 。
map常用于对序列中的元素进行操作 , 例如对每个数进行平方、对每个字符串进行大写操作等 。
reduce常用于对序列中的元素进行累积操作 , 例如对一个序列进行求和、求最大值等 。
【简单了解python filter、map、reduce的区别】在实际的编程中 , 我们常常会将filter、map和reduce进行组合使用 , 从而实现更加复杂的操作 。例如 , 我们可以先使用filter对序列进行过滤 , 然后使用map对过滤后的序列进行操作 , 最后使用reduce对操作后的序列进行累积 。

    推荐阅读