前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python六十二课——高阶函数之filter

python六十二课——高阶函数之filter

作者头像
hankleo
发布2020-09-16 16:36:39
3220
发布2020-09-16 16:36:39
举报
文章被收录于专栏:Hank’s BlogHank’s Blog

高阶函数之: filter函数:过滤数据的,最终返回一个惰性序列对象(filter对象,迭代器对象) 解释: filter的意思:在计算机领域中我们都称为过滤器 格式: filter(fn,lsd): 参数和map、reduce一样理解 功能: 将lsd中的每一个元素都给到fn函数 如果fn函数的返回值为True,那么就保留这个元素到filter对象中 如果fn函数的返回值为False,那么就舍弃这个元素,不会保留到filter对象中 最终filter函数执行完毕了,返回给程序一个filter对象(迭代器对象)

代码语言:javascript
复制
import collections
#需求:lt=[1,2,3,4,5,6,7,8]-->效果:[2,4,6,8]
lt=[1,2,3,4,5,6,7,8]

#代码实现一:老技术
lt1=[]
for i in lt:
    if i%2==0:
        lt1.append(i)
print(lt1)

#代码实现二:新技术
def func(obj):
    if obj%2==0:
        return True
    return False
fo=filter(func,lt)
print(fo,type(fo))
# print(isinstance(fo,collections.Iterator))
# print(next(fo))
print(list(fo))

#终极版
print(list(filter(lambda x:x%2==0,lt)))

'''
需求:
lt = [123,'abcd',0,3.14,0.0,'haha','hehe','',True,False,(),[],{},[1,2,3],{11,22,33},{'name':'jack','age':23}]
得到效果如下:
[123,'abcd',3.14,'haha','hehe',True,[1,2,3],{11,22,33},{'name':'jack','age':23}]
'''
lt = [123,'abcd',0,3.14,0.0,'haha','hehe','',True,False,(),[],{},[1,2,3],{11,22,33},{'name':'jack','age':23}]
print(list(filter(lambda x:bool(x),lt)))
print(list(filter(bool,lt)))

'''
需求:
lt1 = ['aaaaaaaa','bbbb','cccccc','ddd']
得到效果如下:保留长度大于等于4的元素
['aaaaaaaa','bbbb','cccccc']
'''
lt1 = ['aaaaaaaa','bbbb','cccccc','ddd']
print(list(filter(lambda x:len(x) >= 4,lt1)))
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档