Python中lambda、filter、map与reduce函数的核心用法详解
本文详解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函数的完整解析,希望能为读者的学习提供有益帮助,欢迎持续关注本站获取更多技术内容。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













