python filter()和map()
发布日期:2021-05-07 15:03:47 浏览次数:26 分类:技术文章

本文共 856 字,大约阅读时间需要 2 分钟。

标题 Python中的filter()和map()函数的共性和不同点

这两个函数是Python的内建函数,都是针对可迭代的序列经过函数所传的方法返回一个新的可迭代的对象,记住,仅仅返回一个可迭代的对象,这两个是对父类object的一个子继承子类。

map:使用指定方法去作用传入的每个可迭代对象的元素,生成新的可迭代对象。
filter:使用指定方法过滤可迭代对象的元素,从而生成一个新的可迭代对象。
从以上定义可以发现共同点是都可以生成一个新的可迭代对象,但map是针对原序列的每个元素,也就是map不具有逻辑判断的功能,filter根据逻辑判断生成新的迭代对象。 我想,应该可以这样理解。
下面,上代码:

l=(2,5,6,8,4,66)r=filter(lambda i:i>5,l)#过滤列表l中所有大于5的数字print(list(r))#指定返回的对象类型为列表并打印[6, 8, 66]#执行结果#如果没有使用filter,那么,正常的程序是#首先遍历列表,在遍历的时候设置筛选#条件,将符合条件的列表写入新的列表下面是使用map():r1=map(lambda i:i>5,l)#同上print(list(r1))#同上,指定返回迭代对象的类型为列表[False, False, True, True, False, True]#执行结果下面是列表内元素的乘运算:l=(2,5,6,8,4,66)r=filter(lambda i:i*2,l)r1=map(lambda i:i*2,l)print(list(r))print(list(r1))#执行后,filter没有生效,迭代对象转换#列表成功,map正常运算[2, 5, 6, 8, 4, 66][4, 10, 12, 16, 8, 132]补充说一下,filter和map的格式filter(方法,可迭代对象)map(方法,可迭代对象)也就是说,两者的区别在其中的方法细微不同可迭代对象可以是列表推导式,有兴趣的同学可以自行验证。  i
上一篇:大佬龟叔写的一个无聊程序
下一篇:正则表达式4(python re源码解析)

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年03月20日 03时34分09秒