Python 关于filter()的使用
我研究python的内置函数已经有一段时间了,我试图牢牢掌握理想情况,以便在以后应用它们。除了filter(),我都懂,参数是Python 关于filter()的使用,python,Python,我研究python的内置函数已经有一段时间了,我试图牢牢掌握理想情况,以便在以后应用它们。除了filter(),我都懂,参数是filter(function,iterable)。在docs.python.org中,它指出: 如果function为None,则假定identity函数,即删除iterable中所有为false的元素 我决定解决这个问题,因为我不明白要问什么函数(显然,它需要一个函数;但是,什么样的函数?),这就是我尝试的: a=filter(None,[1,0,1,0,1,0])
filter(function,iterable)
。在docs.python.org中,它指出:
如果function为None,则假定identity函数,即删除iterable中所有为false的元素
我决定解决这个问题,因为我不明白要问什么函数(显然,它需要一个函数;但是,什么样的函数?),这就是我尝试的:
a=filter(None,[1,0,1,0,1,0])
<filter object at 0x02898690>
callable(a)
False
a=过滤器(无[1,0,1,0,1,0])
可调用(a)
假的
我的问题:如果筛选器对象不可调用,那么它在哪里适用?示例用法:
>>> list(filter(None, [0, 1, 2, 0, 3, 4, 5, "", 6, [], 7, 8]))
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> def is_multiple_of_two_or_three(x):
return x % 2 == 0 or x % 3 == 0
>>> list(filter(is_multiple_of_two_or_three, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))
[0, 2, 3, 4, 6, 8, 9]
使用lambda
关键字,我们可以将其写成列表(过滤器(lambda x:x%3==0或x%2==0,[0,1,2,3,4,5,6,7,8,9])
在Python2.x中,如果删除对list
的调用,我们将得到相同的结果。在Python3.x中,我们可以使用过滤器中的i(None,something)在没有过滤器对象的情况下迭代过滤器对象,但是我调用了列表来显示结果(iterable的字符串表示通常没有多大帮助)
函数filter
是Python的一部分(以及map
、reduce
和functools
和itertools
模块),它们是的编程范例的一部分。示例用法:
>>> list(filter(None, [0, 1, 2, 0, 3, 4, 5, "", 6, [], 7, 8]))
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> def is_multiple_of_two_or_three(x):
return x % 2 == 0 or x % 3 == 0
>>> list(filter(is_multiple_of_two_or_three, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))
[0, 2, 3, 4, 6, 8, 9]
使用lambda
关键字,我们可以将其写成列表(过滤器(lambda x:x%3==0或x%2==0,[0,1,2,3,4,5,6,7,8,9])
在Python2.x中,如果删除对list
的调用,我们将得到相同的结果。在Python3.x中,我们可以使用过滤器中的i(None,something)
在没有过滤器对象的情况下迭代过滤器对象,但是我调用了列表来显示结果(iterable的字符串表示通常没有多大帮助)
函数filter
是Python的一部分(以及map
、reduce
和functools
和itertools
模块),它们是的编程范例的一部分。示例用法:
>>> list(filter(None, [0, 1, 2, 0, 3, 4, 5, "", 6, [], 7, 8]))
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> def is_multiple_of_two_or_three(x):
return x % 2 == 0 or x % 3 == 0
>>> list(filter(is_multiple_of_two_or_three, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))
[0, 2, 3, 4, 6, 8, 9]
使用lambda
关键字,我们可以将其写成列表(过滤器(lambda x:x%3==0或x%2==0,[0,1,2,3,4,5,6,7,8,9])
在Python2.x中,如果删除对list
的调用,我们将得到相同的结果。在Python3.x中,我们可以使用过滤器中的i(None,something)
在没有过滤器对象的情况下迭代过滤器对象,但是我调用了列表来显示结果(iterable的字符串表示通常没有多大帮助)
函数filter
是Python的一部分(以及map
、reduce
和functools
和itertools
模块),它们是的编程范例的一部分。示例用法:
>>> list(filter(None, [0, 1, 2, 0, 3, 4, 5, "", 6, [], 7, 8]))
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> def is_multiple_of_two_or_three(x):
return x % 2 == 0 or x % 3 == 0
>>> list(filter(is_multiple_of_two_or_three, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))
[0, 2, 3, 4, 6, 8, 9]
使用lambda
关键字,我们可以将其写成列表(过滤器(lambda x:x%3==0或x%2==0,[0,1,2,3,4,5,6,7,8,9])
在Python2.x中,如果删除对list
的调用,我们将得到相同的结果。在Python3.x中,我们可以使用过滤器中的i(None,something)
在没有过滤器对象的情况下迭代过滤器对象,但是我调用了列表来显示结果(iterable的字符串表示通常没有多大帮助)
函数filter
是Python的一部分(以及map
、reduce
和functools
和itertools
模块),它们是的编程范例的一部分。函数可以是任何Python函数:
def func(x):
return x != 0
>>> list(filter(func, [1,0,1,0,1,0]))
[1, 1, 1]
def some_func(x):
return x > 5
filter(some_func, iterable)
def
基于功能:
def func(x):
return x != 0
>>> list(filter(func, [1,0,1,0,1,0]))
[1, 1, 1]
def some_func(x):
return x > 5
filter(some_func, iterable)
lambda
:
>>> list(filter(lambda x: x!=0, [1,0,1,0,1,0]))
[1, 1, 1]
filter(lambda x: x > 5, iterable)
在Python3中,filter返回一个迭代器。它从不返回可调用函数。函数可以是任何python函数:
def func(x):
return x != 0
>>> list(filter(func, [1,0,1,0,1,0]))
[1, 1, 1]
def some_func(x):
return x > 5
filter(some_func, iterable)
def
基于功能:
def func(x):
return x != 0
>>> list(filter(func, [1,0,1,0,1,0]))
[1, 1, 1]
def some_func(x):
return x > 5
filter(some_func, iterable)
lambda
:
>>> list(filter(lambda x: x!=0, [1,0,1,0,1,0]))
[1, 1, 1]
filter(lambda x: x > 5, iterable)
在Python3中,filter返回一个迭代器。它从不返回可调用函数。函数可以是任何python函数:
def func(x):
return x != 0
>>> list(filter(func, [1,0,1,0,1,0]))
[1, 1, 1]
def some_func(x):
return x > 5
filter(some_func, iterable)
def
基于功能:
def func(x):
return x != 0
>>> list(filter(func, [1,0,1,0,1,0]))
[1, 1, 1]
def some_func(x):
return x > 5
filter(some_func, iterable)
lambda
:
>>> list(filter(lambda x: x!=0, [1,0,1,0,1,0]))
[1, 1, 1]
filter(lambda x: x > 5, iterable)
在Python3中,filter返回一个迭代器。它从不返回可调用函数。函数可以是任何python函数:
def func(x):
return x != 0
>>> list(filter(func, [1,0,1,0,1,0]))
[1, 1, 1]
def some_func(x):
return x > 5
filter(some_func, iterable)
def
基于功能:
def func(x):
return x != 0
>>> list(filter(func, [1,0,1,0,1,0]))
[1, 1, 1]
def some_func(x):
return x > 5
filter(some_func, iterable)
lambda
:
>>> list(filter(lambda x: x!=0, [1,0,1,0,1,0]))
[1, 1, 1]
filter(lambda x: x > 5, iterable)
在Python3中,filter返回一个迭代器。它从不返回可调用的。请注意:
"none" != None
文档的意思是,如果函数为None
:
filter(None, iterable)
它假定您只需要iterable
中bool(item)==True的项
要实际向过滤器提供功能
,通常使用lambda
:
>>> list(filter(lambda x: x!=0, [1,0,1,0,1,0]))
[1, 1, 1]
filter(lambda x: x > 5, iterable)
或定义一个函数:
def func(x):
return x != 0
>>> list(filter(func, [1,0,1,0,1,0]))
[1, 1, 1]
def some_func(x):
return x > 5
filter(some_func, iterable)
过滤器
对象不可调用,但它是可调用的:
a = filter(None, iterable)
for item in a:
print item
请注意:
"none" != None
文档的意思是,如果函数为None
:
filter(None, iterable)
它假定您只需要iterable
中bool(item)==True的项
要实际向过滤器提供功能
,通常使用lambda
:
>>> list(filter(lambda x: x!=0, [1,0,1,0,1,0]))
[1, 1, 1]
filter(lambda x: x > 5, iterable)
或定义一个函数:
def func(x):
return x != 0
>>> list(filter(func, [1,0,1,0,1,0]))
[1, 1, 1]
def some_func(x):
return x > 5
filter(some_func, iterable)
过滤器
对象不可调用,但它是可调用的:
a = filter(None, iterable)
for item in a:
print item
请注意:
"none" != None
文档的意思是,如果函数为None
:
filter(None, iterable)
它假定您只需要iterable
中bool(item)==True的项
要实际向过滤器提供功能
,通常使用lambda
:
>>> list(filter(lambda x: x!=0, [1,0,1,0,1,0]))
[1, 1, 1]
filter(lambda x: x > 5, iterable)
或定义一个函数:
def func(x):
return x != 0
>>> list(filter(func, [1,0,1,0,1,0]))
[1, 1, 1]
def some_func(x):
return x > 5
filter(some_func, iterable)
过滤器
对象不可调用,但它是可调用的:
a = filter(None, iterable)
for item in a:
print item
请注意:
"none" != None
文档所说的是,如果