python中filter()函数的用法和实例详解,参数返回值
filter()函数描述
filter()函数是python内置的一个可以用于过滤iterable可迭代对象元素的函数,接收两个参数(具体可以看下方的python源码),返回值是filter object,一个可迭代的filter对象(注意,只能迭代一次),一般情况下,filter对象是“无法”输出显示的,需要进行数据类型的转换,比如用list(),也可以用for循环进行迭代输出,具体的可以看下方的实例代码。
filter()函数的参数结构语法
这里的filter()函数的参数结构语法来源于部分的python的源码:
filter(function or None, iterable) --> filter object
filter()函数参数解析
- function or None:用于过滤掉第二个参数——可迭代对象中元素的函数,可以称为条件判断,也可以是None;
- iterable:python的可迭代对象,如字符串、列表、元组、字典、集合、range对象等等;
filter()函数的作用机制是将第二个参数的可迭代对象中的元素逐个作为参数传入到第一个参数function or None中进行条件判断,过滤掉不符合条件的,然后保留符合条件的。
filter()函数返回值
filter object;一个可迭代对象(只能迭代一次);可以通过数据转换或for循环进行输出;
filter()函数实例代码
>>> c = filter(lambda x:x>0, [0,1])
>>> type(c)
<class 'filter'>
>>> c
<filter object at 0xyyy>
>>> list(c)
[1]
>>> list(c)
[]
>>> filter(None, [1,2]) #filter的第一个参数为None;
<filter object at 0xxx0>
>>> set(filter(None, [1,2]))
{1, 2}
>>> for i in filter(None, [1,2]): #filter函数通过for循环迭代输出
... print(i)
...
1
2
filter()函数代码解析
如上代码,通过filter()函数过滤出来的返回值为filter对象,而且通过两次list()函数的转换,可以发现,flter对象只能迭代一次,第二次转换的时候就变成空的了。