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])

我研究python的内置函数已经有一段时间了,我试图牢牢掌握理想情况,以便在以后应用它们。除了filter(),我都懂,参数是
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
文档所说的是,如果