2017-08-16 25 views
0
A = 0 
B = 10 
C = 20 
N = [(A, B, C)] 

Avarage = (A + B + C)/sum(1 for i in N if i != 0) 

Avarage = 30?Python - 使變量變量無0

Need Avarage = 15.

有什麼想法嗎?

+1

'N'是含有1元組所以'因爲我在N'列表...我會'(0 ,10,20)'和!= 0 ....讓你30/1 – depperm

回答

3

你需要從你的列表N

a = 0 
b = 10 
c = 20 
n = [a, b, c] 

list_avg = sum(n)/sum(1 for i in n if i != 0) 

輸出刪除()

>>> list_avg 
15 
0

正如depperm所述,N是一個元組的列表,所以你只有一個元素(它不是0,因爲它是一個元組而不是一個int)。否則,你可以使用numpy的

import numpy as np 
average = np.mean([A, B, C]) 
1

N中包含列表元組。所以sum(1 for i in N if i != 0)返回1因爲只有1名單N.元素(一個元組)

嘗試:

A = 0 
B = 10 
C = 20 
N = [(A, B, C)] 

Avarage = (A + B + C)/sum(1 for i in N[0] if i != 0) 
print Avarage 

OR:

A = 0 
B = 10 
C = 20 
N = [A, B, C] 

Avarage = (A + B + C)/sum(1 for i in N if i != 0) 
print Avarage 
+0

是的,現在明白!謝謝 – leandurus

0

製作值的一個新的列表沒有零,則平均是:

non_zero = [v for v in (A, B, C) if v != 0] 
avg = sum(non_zero)/len(non_zero)