2015-11-02 141 views
-2

我的函數需要獲取一個整數列表並返回列表中負整數的總和。我該如何解決這個問題,以便列表對象被視爲整數?返回列表中負數的總和的Python函數

def sumNegativeInts(listInt): 
    sumNegative=0 
    for x in listInt.split(','): 
     if int(x) < 0: 
      sumNegative+=listInt(x) 
    return sumNegative 
+2

有許多潛在的不正確的事錯與你的代碼,但我們無法確定的背景知道。請提供簡短的**完整**程序,說明您遇到的問題。 –

回答

2

如果您的「列表」不是字符串,您的號碼將按順序存儲。

def sumNegativeInts(listInt): 
    sum_result = 0 
    for x in listInt: 
     if x < 0: 
      sum_result += x 
    return(int(sum_result)) 

請注意,如果您的號碼全部爲int,則在返回時不需要施加總和。

+2

請注意,通過使用「sum」這個名字,你可以隱藏內置函數,在這種情況下真的很有用...... – jonrsharpe

+0

@jonrsharpe你是對的。用另一個名字編輯 – fattidare

5

您不需要split列表。

def sumNegativeInts(listInt): 
    m = 0 
    for x in listInt: 
     if x < 0: 
      m+=x 
    return(int(m)) 

a = [1, 3, 4, 5, -2, -3, 4, -1] 
print sumNegativeInts(a) 

輸出(-2 + -3 + -1)

-6 

一種更好的方式使用生成器表達式:

print sum(x for x in a if x<0) 
+1

僅供參考,您的「更好的方式」是[生成器表達式](https://docs.python.org/2/reference/expressions.html#generator-expressions),而不是列表理解。 –