为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

桃花长相依 2021-09-01 14:10:40
尝试过滤“无”输出时出现错误,在 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 输出,因为它正在“添加”这个None2None4None6None8None而不是这个2468
查看完整描述

2 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

这里有几个错误。首先,不要使用sum因为是一个内置的python 函数名。的,filter期待一个迭代与工作和功能。None不是一个函数,它将使用该identity函数(它返回它所采用的相同值)(@bro-grammer 的提示)。由于 x 不是可迭代的,因此您不能对其使用过滤器。


你想检查是否x是偶数:


def my_function(x):

    if (x % 2 == 0):

        return True

    return False


sumation = 0

for x in range(1, 10):

    if my_function(x):

        sumation += x

print(sumation)

使用实际filter和的另一个选项sum是:


>>> def my_function(x):

...     if (x % 2 == 0):

...         return True

...     return False

... 

>>> sumation = sum(filter(my_function, range(1, 10)))

>>> sumation

20

这样做的pythonic方法是使用生成器和sum:


>>> sum(x for x in range(1, 10) if x % 2 == 0 )

20


查看完整回答
反对 回复 2021-09-01
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

我猜你试图以错误的方式使用过滤器功能。您可以使用此代码作为示例:


def my_function(x):

    if (x % 2 == 0):

        return True

    else:

        return False


alist = filter(my_function,list(range(1,10)))

print(sum(alist))

希望能帮助到你


查看完整回答
反对 回复 2021-09-01
  • 2 回答
  • 0 关注
  • 290 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信