2 回答
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
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))
希望能帮助到你
添加回答
举报