Python中lambda、filter、map与reduce函数的核心用法详解

小林子
小林子
发布时间:2026-10-13 | 2人浏览过
原创

本文详解Python中lambda匿名函数的定义与语法,并深入解析filter、map、reduce三大高阶函数的用法。文章结合Python3.7环境,通过具体代码示例展示如何利用lambda配合这些函数进行数据过滤、映射转换及累积计算,涵盖多序列处理及Python2与Python3的差异说明。

Python高阶函数基础与lambda表达式

前言

lambda表达式用于创建匿名函数,常与filter、map及reduce函数配合使用以实现简洁的数据处理逻辑。

本文演示环境基于Python3.7版本。

一、lambda表达式基础

lambda语句仅包含单一表达式,旨在快速创建匿名函数对象。

其基本语法结构如下:


lambda [arg1 [,arg2,.....argn]]:expression

arg1代表输入参数,支持定义多个参数。

expression为具体的计算表达式。

具体应用示例如下:


f1 = lambda x : x > 10
print(f1(1)) #输出:False
print(f1(11)) #输出:True
f2 = lambda x, y: x + y
print(f2(1,2)) #输出:3

filter()函数过滤序列详解

二、filter()过滤函数解析

filter()函数用于对序列数据进行条件过滤,剔除不符合条件的元素,并返回一个迭代器对象(注:Python2中直接返回列表),可通过list()函数将其转换为列表格式。

该函数的语法定义如下:


filter(function, iterable)

function指定用于判断的函数。

iterable表示待处理的序列,序列中的每个元素将作为参数传入函数进行判断,函数返回True或False,最终仅将返回True的元素保留在迭代器对象中。

具体使用示例如下:


def isEven(x):
  return x % 2 == 0
list1 = filter(isEven,[1,2,3,4,5,6])
print(list(list1)) #输出:[2, 4, 6]
#可以用lambda
list2 = filter(lambda x:x%2==0, [1,2,3,4,5,6])
print(list(list2)) #输出:[2, 4, 6]
#也可以用列表推导式
list3 = list(x for x in [1,2,3,4,5,6] if x%2==0)
print(list3) #输出:[2, 4, 6]

map()函数序列映射处理

三、map()映射函数解析

map()函数接收一个函数f及一个或多个序列(如list),将函数f依次作用于序列的每个元素,从而生成一个新的迭代器对象(Python2中返回列表)并返回结果。

其语法结构如下:


map(function, iterable, ...)

function为处理函数,若传入多个序列,则该函数需对应接收多个参数。

iterable表示一个或多个待处理的序列对象。

具体使用示例如下:


def multi(x):
  return x * 2

def multi2(x, y):
  return x * y

#参数只有1个序列时
list1 = map(multi,[1,2,3,4,5])
print(list(list1)) #输出:[2, 4, 6, 8, 10]

#用lambda改写上面语句
list1_1 = map(lambda x : x*2, [1,2,3,4,5])
print(list(list1_1)) #输出:[2, 4, 6, 8, 10]

#参数有2个序列时,
list2 = map(multi2,[1,2,3,4,5],[6,7,8,9,10])
print(list(list2)) #对2个列表数据的相同位置元素相乘,输出:[6, 14, 24, 36, 50]

#用lambda改写上面语句
list2_1 = map(lambda x,y : x*y, [1,2,3,4,5],[6,7,8,9,10])
print(list(list2_1)) #输出:[6, 14, 24, 36, 50]

#当2个序列长度不一致时,结果以2个序列中的最短长度为准
list2_2 = map(lambda x,y : x*y, [1,2,3],[6,7,8,9,10])
print(list(list2_2)) #输出:[6, 14, 24]
list2_3 = map(lambda x,y : x*y, [1,2,3,4,5],[6,7,8])
print(list(list2_3)) #输出:[6, 14, 24]

reduce()函数累积计算与版本差异

四、reduce()累积函数解析

reduce()函数用于对数据集合执行累积操作:首先调用传入的函数function(该函数必须包含两个参数)对集合中的第1和第2个元素进行操作,随后将结果与第3个元素继续通过function运算,依此类推,直至处理完所有元素并返回最终结果。

在Python2中,reduce()为内置函数;而在Python3中,该函数被移至functools模块中。

其语法定义如下:


reduce(function, iterable[, initializer])

function为处理函数,必须接收两个参数。

iterable表示可迭代对象。

initializer为可选参数,用于指定初始值。

具体使用示例如下:


from functools import reduce
def add(x, y):
  return x + y
def mulit(x, y):
  return x * y
print(reduce(add, [1, 2, 3, 4, 5])) #输出:15
print(reduce(add, [1, 2, 3, 4, 5], 10)) #输出:25
print(reduce(mulit, [1, 2, 3, 4, 5])) #输出:120
print(reduce(mulit, [1, 2, 3, 4, 5], 10)) #输出:1200
print(reduce(lambda x,y:x+y,[1, 2, 3, 4, 5]))#输出:15
print(reduce(lambda x,y:x+y,[1, 2, 3, 4, 5], 10))#输出:25

以上即为本文关于Python中lambda、filter、map及reduce函数的完整解析,希望能为读者的学习提供有益帮助,欢迎持续关注本站获取更多技术内容。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表