2016-08-17 112 views
0

有一個函數返回列表x中大於整數y的整數之和。如果沒有數大於y的函數返回0是否可以通過以下函數進行列表理解?

def sum_greater(x, y): 
    result = 0 
    for i in range(len(x)): 
     if x[i] > y: 
      result = result + x[i] 
    return result 

我的問題更大:是否有可能(如果它比如何),使這個函數列表理解?

+0

我didn't考慮一下。如果所有數字都小於y,它必須返回0。但是當我在shell中運行模塊(sum_greater([1,2,3,4,5,6],4))時,它返回11,所以我認爲它正常工作 –

+0

返回0,而不是11。我們錯了代碼? – zondo

+0

你是對的,我複製了錯誤的代碼 –

回答

3

您可以使用sum()功能與發電機的表達:

sum(i for i in x if i > y) 
3

由於0是沒有的總和,這並不需要任何特殊處理的自然結果。您可以發送generator expression到內置sum

def sum_greater(x, y): 
    return sum(i for i in x if i>y) 
相關問題