python的filter函数的使用方法详解以及使用案例,是否以什么结尾,是否大于什么(判断是True,则留下来)
1、总共有3个人看电影,有2个人看电影经常说话,我们把他们两个过滤出去
move_people=["gouguoqi","beiye_sb","xiudiannao_sb"] ret=[] for n in move_people: if n.endswith("sb"): pass else: ret.append(n) print (ret) C:\python35\python3.exe D:/pyproject/day14函数/filter函数.py ['gouguoqi']
2、写成函数应该怎么写
move_people=["gouguoqi","beiye_sb","xiudiannao_sb"]#1.定义3个看电影的人 def del_sb(people):#2.定义一个函数,到20行,放入内存中,等待被调用 ret = []#3.1定义一个空列表 for n in people:#3.2循环这3个看电影的人 if n.endswith("sb"):#判断如果是sb结尾的就什么都不干 pass else:#如果结尾不是sb的就把名字追加到空列表ret里面 ret.append(n) return ret#最后函数返回值是ret 也就是一个列表 print(del_sb(move_people))#3.调用del_sb这个函数,把列表作为参数传给people C:\python35\python3.exe D:/pyproject/day14函数/filter函数.py ['gouguoqi']
3、改成功能性的函数
move_people=["gouguoqi","beiye_sb","xiudiannao_sb"]#1.定义3个看电影的人 def del_end_sb(x): return x.endswith("sb") def del_sb(func,people):#2.定义一个函数,到20行,放入内存中,等待被调用 ret = []#3.1定义一个空列表 for n in people:#3.2循环这3个看电影的人 if func(n):#判断如果是sb结尾的就什么都不干 pass else:#如果结尾不是sb的就把名字追加到空列表ret里面 ret.append(n) return ret#最后函数返回值是ret 也就是一个列表 print(del_sb(del_end_sb,move_people))#3.调用del_sb这个函数,把列表作为参数传给people C:\python35\python3.exe D:/pyproject/day14函数/filter函数.py ['gouguoqi']
4、终极版本就是下面这样了
lambda x:x.endswith("sb") 这个替换了下面这个自定义函数 def del_end_sb(x): return x.endswith("sb") move_people=["gouguoqi","beiye_sb","xiudiannao_sb"]#1.定义3个看电影的人 def del_sb(func,people):#2.定义一个函数,到20行,放入内存中,等待被调用 ret = []#3.1定义一个空列表 for n in people:#3.2循环这3个看电影的人 if func(n):#判断如果是sb结尾的就什么都不干 pass else:#如果结尾不是sb的就把名字追加到空列表ret里面 ret.append(n) return ret#最后函数返回值是ret 也就是一个列表 print(del_sb(lambda x:x.endswith("sb"),move_people)) C:\python35\python3.exe D:/pyproject/day14函数/filter函数.py ['gouguoqi']
5、filter 取出sb结尾的
move_people=["gouguoqi","beiye_sb","xiudiannao_sb"] print (list(filter(lambda x:x.endswith("sb"),move_people))) C:\python35\python3.exe D:/pyproject/day14函数/filter函数.py ['beiye_sb', 'xiudiannao_sb']
取出不是sb结尾的
move_people=["gouguoqi","beiye_sb","xiudiannao_sb"] print (list(filter(lambda x:not x.endswith("sb"),move_people))) C:\python35\python3.exe D:/pyproject/day14函数/filter函数.py ['gouguoqi']
filter的语法跟map的语法是一样的,2个参数
filter(一个处理方法,可迭代对象)
6、filter遍历序列中的每个元素,判断每个元素得到布尔值,如果True则留下来
name=[ { "name":"beiye","age":9000, "name":"maioye","age":8000, "name":"xiudiannao","age":7000, "name":"gouguoqi","age":18 } ] print (list(filter(lambda x:x["age"]<=18,name))) C:\python35\python3.exe D:/pyproject/day14函数/filter函数.py [{'name': 'gouguoqi', 'age': 18}]
那name这个列表里面的每个元素以for循环的方式作为参数传递给x,冒号后面是处理方法