赞
踩
1.函数简介:
filter函数是Python中常用的内置函数,调用无需加载库,直接使用即可。它主要用来根据特定条件过滤迭代器中不符合条件的元素,返回一个惰性计算的filter对象或迭代器。需要用list函数进行转换,才能得到符合的条件元素组成的新列表。
2.用法
filter(function or None, iterable)
function:函数,作用是对iterable中的每个元素判断是否符合特定条件。
None:不调用任何函数,只对可迭代对象中的元素本身判断真假,保留为真的元素。
iterables:可迭代对象(序列、字典等)。
注意:该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
3.实例
c = [1,2,3,4,5,6,7,8,9]
def f(x):
return x % 2 == 0
print(filter(f,c))
输出结果:<filter object at 0x000001FF67EE3FA0>
返回一个惰性计算的filter对象或迭代器。接下来看下用list函数进行转换会得到什么,代码如下:
c = [1,2,3,4,5,6,7,8,9]
def f(x):
return x % 2 == 0
print(list(filter(f,c)))
输出结果:[2, 4, 6, 8]
#labmda语句形式:
c = [1,2,3,4,5,6,7,8,9]
print(list(filter(lambda x:x % 2 == 0,c)))
输出结果:[2, 4, 6, 8]
4.当第一个参数为None,而不是函数时
只对可迭代对象中的元素本身判断真假,保留为真的元素,代码如下:
c = [-1,0,1,2,0]
print(list(filter(None,c)))
输出结果:[-1, 1, 2]
因为python中,0表示False,非0表示True,所以过滤掉False的值,即过滤掉0。
5.在字典中的用法
c = {1:'苹果',2:'华为',3:'三星',4:'小米'}
print(list(filter(lambda x:x>2,c)))
输出结果:[3, 4]
从结果知,filter函数对字典进行处理的时候,筛选的对象是字典的键,而不是字典的值。
要想满足筛选条件的字典,可用以下代码:
c = {1:'苹果',2:'华为',3:'三星',4:'小米'}
a = {i:j for i,j in c.items() if i in list(filter(lambda x:x>2,c)) }
print(a)
输出结果:{3: '三星', 4: '小米'}
6.总结
filter函数相当于一个过滤器,和filter的中文含义一致,根据函数(或者None)来进行判断,如果参数是函数,将对应的判断对象带入函数,如果返回True则输出,否则过滤掉。如果参数是None,则将False过滤掉,即过滤掉0。
#初学笔记,难免有错误,请大家批评指正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。