Python内置函数map和filter,傻傻分不清楚?
共 1242字,需浏览 3分钟
·
2022-05-13 04:37
回复“资源”即可获赠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个元素。
后来【月神】补充了一下,filte
r和map
一样,返回的是迭代器,map返回给定函数的计算值,filter是使用给定的函数作为判断依据:类似于:
(map):[i // 2 for i in list1]
(filter):[i for i in list1 if i // 2]
map
和filter
返回一个迭代器,迭代器都可以转换为特定的列表生成式,使用列表生成式,可能更明白一点。
三、总结
大家好,我是皮皮。这篇文章主要盘点了Python
内置函数map
和filter
的区别,文中针对该问题给出了具体的解析和代码演示,帮助粉丝顺利解决了问题。
最后感谢粉丝【Chloe】提问,感谢【瑜亮老师】、【月神】给出的代码和具体解析,感谢【dcpeng】等人参与学习交流。
小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。
------------------- End -------------------
往期精彩文章推荐:
欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行