filter、map、reduce函数怎么在Python中使用

filter、map、reduce函数怎么在Python中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

一、lambda表达式

filter、map、reduce函数怎么在Python中使用

lambda 只包含一个语句,用于创建匿名函数。

语法:

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

arg1 -- 参数,可以有多个

expression -- 表达式

使用例子:

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

二、filter() 函数

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回迭代器对象(Python2是列表),可以使用list()转换为列表。

语法:

filter(function,iterable)

function -- 函数

iterable -- 序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到迭代器对象中。

使用例子:

defisEven(x):
returnx%2==0
list1=filter(isEven,[1,2,3,4,5,6])
print(list(list1))#输出:[2,4,6]
#可以用lambda
list2=filter(lambdax:x%2==0,[1,2,3,4,5,6])
print(list(list2))#输出:[2,4,6]
#也可以用列表推导式
list3=list(xforxin[1,2,3,4,5,6]ifx%2==0)
print(list3)#输出:[2,4,6]

三、map()函数

map()接收一个函数 f 和一个或多个序列 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 迭代器(Python2是列表) 并返回。

语法:

map(function,iterable,...)

function -- 函数,如果iterable有多个序列,则function的参数也对应有多个

iterable -- 一个或多个序列

使用例子:

defmulti(x):
returnx*2

defmulti2(x,y):
returnx*y

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

#用lambda改写上面语句
list1_1=map(lambdax: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(lambdax,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(lambdax,y:x*y,[1,2,3],[6,7,8,9,10])
print(list(list2_2))#输出:[6,14,24]
list2_3=map(lambdax,y:x*y,[1,2,3,4,5],[6,7,8])
print(list(list2_3))#输出:[6,14,24]

四、reduce()函数

reduce()函数对一个数据集合的所有数据进行操作:用传给 reduce 中的函数 function(必须有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

在Python2中reduce()是内置函数,Pytho3移到functools 模块。

语法:

reduce(function,iterable[,initializer])

function -- 函数,有两个参数

iterable -- 可迭代对象

initializer -- 可选,初始参数

使用例子:

fromfunctoolsimportreduce
defadd(x,y):
returnx+y
defmulit(x,y):
returnx*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(lambdax,y:x+y,[1,2,3,4,5]))#输出:15
print(reduce(lambdax,y:x+y,[1,2,3,4,5],10))#输出:25

关于filter、map、reduce函数怎么在Python中使用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注恰卡编程网行业资讯频道了解更多相关知识。

发布于 2021-04-03 22:30:43
收藏
分享
海报
0 条评论
158
上一篇:如何在Yii框架中使用响应组件 下一篇:怎么在Laravel中使用事件监听器
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码