使用 filter() 过滤“无”输出 Python

尝试过滤“无”输出时出现错误,在 Python 中使用过滤器函数时,这是我的代码:


def my_function(x):

if (x % 2 == 0):

    x=filter(None, x)

    return(x)


for x in range(1, 10):

    sum=sum+(my_function(x))

    print(sum)

并且 Python 无法求和,因为无法删除 None 输出,因为它正在“添加”这个


None

2

None

4

None

6

None

8

None

而不是这个


2

4

6

8


桃花长相依
浏览 291回答 2
2回答

Cats萌萌

这里有几个错误。首先,不要使用sum因为是一个内置的python 函数名。的,filter期待一个迭代与工作和功能。None不是一个函数,它将使用该identity函数(它返回它所采用的相同值)(@bro-grammer 的提示)。由于 x 不是可迭代的,因此您不能对其使用过滤器。你想检查是否x是偶数:def my_function(x):    if (x % 2 == 0):        return True    return Falsesumation = 0for x in range(1, 10):    if my_function(x):        sumation += xprint(sumation)使用实际filter和的另一个选项sum是:>>> def my_function(x):...     if (x % 2 == 0):...         return True...     return False... >>> sumation = sum(filter(my_function, range(1, 10)))>>> sumation20这样做的pythonic方法是使用生成器和sum:>>> sum(x for x in range(1, 10) if x % 2 == 0 )20

素胚勾勒不出你

我猜你试图以错误的方式使用过滤器功能。您可以使用此代码作为示例:def my_function(x):    if (x % 2 == 0):        return True    else:        return Falsealist = filter(my_function,list(range(1,10)))print(sum(alist))希望能帮助到你
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python