2 回答

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
這里有幾個(gè)錯(cuò)誤。首先,不要使用sum因?yàn)槭且粋€(gè)內(nèi)置的python 函數(shù)名。的,filter期待一個(gè)迭代與工作和功能。None不是一個(gè)函數(shù),它將使用該identity函數(shù)(它返回它所采用的相同值)(@bro-grammer 的提示)。由于 x 不是可迭代的,因此您不能對(duì)其使用過(guò)濾器。
你想檢查是否x是偶數(shù):
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)
使用實(shí)際filter和的另一個(gè)選項(xiàng)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貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
我猜你試圖以錯(cuò)誤的方式使用過(guò)濾器功能。您可以使用此代碼作為示例:
def my_function(x):
if (x % 2 == 0):
return True
else:
return False
alist = filter(my_function,list(range(1,10)))
print(sum(alist))
希望能幫助到你
添加回答
舉報(bào)