簡體   English   中英

使用filter()過濾“無”輸出Python

[英]Filter 'None' output Python using filter()

嘗試過濾“無”輸出時出現錯誤,在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

這里有幾個錯誤。 首先,不要使用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)

使用實際filtersum的另一個選項是:

>>> def my_function(x):
...     if (x % 2 == 0):
...         return True
...     return False
... 
>>> sumation = sum(filter(my_function, range(1, 10)))
>>> sumation
20

pythonic的方法是使用generator和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 False

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

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM