Python中map()和filter()的魔幻用法

引言

在python数据处理过程中,map函数和filter函数可有效处理数据或筛选出符合条件的数据元素,它们在使用过程中经常嵌入lambda匿名函数。所以本文在介绍两个魔法函数之前,先简单介绍一下匿名函数lambda的使用。

目录

引言

一、lambda匿名函数

1.语法

2.示例代码

3.注意事项

二、map()

1.语法

2.示例代码

3.注意事项

三、filter()

1.语法

2.示例代码

3.注意事项

四、map函数与filter函数的区别总结


一、lambda匿名函数

1.语法

lambda arguments : expression

arguments:参数列表,可以没有参数也可以是多个参数,参数间用逗号分割。 

expression:  表达式描述函数的返回值。

2.示例代码

result = lambda x,y:x+y
print(result(2,3))    #结果为5

3.注意事项

(1)lambda函数只能写一个表达式作为函数的返回值。

(2)lambda函数作为一个匿名函数,没有自己的名称。

(3)lambda函数语法简洁不能进行太复杂的逻辑计算,可以嵌入其他函数代码块中。

二、map()

1.语法

map(func,*iterables)

func参数:应用到可迭代对象中每一个元素上的函数

iterables参数:可迭代对象(列表、元组等),可迭代对象可以有多个。

2.示例代码

(1)对列表中每个元素*2

def multiply(x):
    return x*2
data = [1,2,3,4]
result = map(multiply,data)
print(list(result))       #结果 [2, 4, 6, 8]

应用lambda匿名函数书写代码更简洁逻辑更清晰

result = map(lambda x:x*2,data)

(2)两个列表元素相乘

def multiply(x,y):
    return x*y
data_1 = [1,2,3,4]
data_2 = [3,4,5,6,7]
result = map(multiply,data_1,data_2)
print(list(result))

3.注意事项

map()函数中的func函数对可迭代对象中的每个元素逐一处理并返回处理结果,可以用lambda匿名函数书写逻辑更清晰。可迭代对象可以有多个,若两个计算列表长度不一致时,对长列表进行截断处理。map的返回值是一个迭代器,输出结果需要转换成列表,list(map(...))。

三、filter()

1.语法

filter(func,iterable)

根据func函数筛选出符合条件的数据。

func:返回值是布尔值

iterable:可迭代对象

2.示例代码

返回列表中大于2的数

def larger_2(x):
    return x>2
data = list(range(5))
print('data: ',data)
result = filter(larger_2,data)
print('result:',list(result))
##################
data:  [0, 1, 2, 3, 4]
result: [3, 4]

3.注意事项

filter()函数内的函数部分返回值是一个布尔值,只有将布尔值为真的数据部分输出,函数部分也可以用lambda匿名函数书写。可迭代对象只能有一个而不像map函数可以有多个。filter函数返回值是一个迭代器,要想输出结果需转换成列表list。

四、map函数与filter函数的区别总结

map内部的函数参数输出的是数据的处理结果,而filter内部的函数参数输出的是布尔值,若布尔值为真则输入数据保留并返回。如果用lambda匿名函数书写函数参数部分时,filter返回的是lambda表达式为真的参数,map返回的是lambda表达式的运算结果。

示例:

#lambda函数在filter函数中使用
data = list(range(5))
result = filter(lambda x:x>2,data)    #filter返回表达式为真的输入数据
print('result: {}'.format(list(result)))


#lambda函数在map函数中使用
data = list(range(5))
result = map(lambda x:x*2,data)       #map返回表达式的处理结果
print('result: {}'.format(list(result)))

参考文献:

Python列表魔法:filter()与map()方法,让你秒变处理高手!_python filter与 map 函数-CSDN博客

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值