Python内置函数map和filter,傻傻分不清楚?

共 1242字,需浏览 3分钟

 ·

2022-05-13 04:37

点击上方“Python共享之家”,进行关注

回复“资源”即可获赠Python学习资料

远芳侵古道,晴翠接荒城。

大家好,我是皮皮。

一、前言

前几天在Python最强王者交流群有个叫【Chloe】的粉丝问了Python内置函数的问题,如下图所示。

下图是她的原始内容。

hello, 请问map() 和 filter() 有啥区别? 下面的filter() 为啥结果不是[0, 1, 2, 4, 8]
list_1 = [2**x for x in range(5)]
print(list_1)  # [1, 2, 4, 8, 16]

list_2 = list(map(lambda x: x//2, list_1))
print(list_2)  # [0, 1, 2, 4, 8]

list_2 = list(filter(lambda x: x//2, list_1))
print(list_2)   # [2, 4, 8, 16]

二、实现过程

这里【瑜亮老师】给出了一个解答,Python3中filter函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。这里面有3层意思:

1.先做判断,运行结果为True的才会被选中

2.返回的值是原来的元素,而不是运算后的结果

3.filter函数的返回值是个迭代器

元素1//2的结果是0,是False,因此会被舍弃。其余几个元素的运算结果都是True(非0就是True),因此,结果列表只会有4个元素。

后来【月神】补充了一下,filter和map一样,返回的是迭代器,map返回给定函数的计算值,filter是使用给定的函数作为判断依据:类似于:

(map):[i // 2 for i in list1]

(filter):[i for i in list1 if i // 2]

mapfilter返回一个迭代器,迭代器都可以转换为特定的列表生成式,使用列表生成式,可能更明白一点。

三、总结

大家好,我是皮皮。这篇文章主要盘点了Python内置函数mapfilter的区别,文中针对该问题给出了具体的解析和代码演示,帮助粉丝顺利解决了问题。

最后感谢粉丝【Chloe】提问,感谢【瑜亮老师】、【月神】给出的代码和具体解析,感谢【dcpeng】等人参与学习交流。

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

------------------- End -------------------

往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【

万水千山总是情,点个【在看】行不行

浏览 25
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报