在尝试过滤“无”输出时出现错误,在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
答案 0 :(得分:3)
这里有几个错误。首先,不要使用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
答案 1 :(得分:1)
我猜您正在尝试以错误的方式使用过滤器功能。您可以将以下代码用作示例:
def my_function(x):
if (x % 2 == 0):
return True
else:
return False
alist = filter(my_function,list(range(1,10)))
print(sum(alist))
希望有帮助