Python 如何从部分为空的列表中获取平均值示例[0,2,4,0,4,0,0,0,10]

Python 如何从部分为空的列表中获取平均值示例[0,2,4,0,4,0,0,0,10],python,mean,Python,Mean,如何从部分为空的列表中获取平均值示例[0,2,4,0,4,0,0,0,10] 所以平均值应该是2+4+4+10/4=5,但是statistics.mean除以列表中的数字总数,在本例中是10 所以在我的例子中,我需要从可被3整除的数字列表中得到平均值 import random import statistics a = [] b = [] c = [0,2,4,0,4,0,0,0,0,10] for x in range (10): a.append(random.randint(0

如何从部分为空的列表中获取平均值示例[0,2,4,0,4,0,0,0,10]

所以平均值应该是2+4+4+10/4=5,但是statistics.mean除以列表中的数字总数,在本例中是10

所以在我的例子中,我需要从可被3整除的数字列表中得到平均值

import random
import statistics

a = []
b = []
c = [0,2,4,0,4,0,0,0,0,10]
for x in range (10):
    a.append(random.randint(0,101))

for x in a:
    if x%3==0:
        b.append(x)
    else:
        b.append(0)

average = statistics.mean(b)

print('a',a)
print('b',b)
print('Srednia',average)

您可以使用for循环从列表中筛选出零

from statistics import mean

c = [0,2,4,0,4,0,0,0,0,10]

#Filter out 0's
non_zero_c = [item for item in c if item]

#Calculate mean from non zero numbers
print(mean(non_zero_c))

输出将很快变为5,最简单的方法是使用一些列表理解来选择列表中您感兴趣的部分

例如:

如何从部分为空的列表中获取平均值示例[0,2,4,0,4,0,0,0,10]

a = [0,2,4,0,4,0,0,0,0,10]
a_selection = [elt for elt in a if elt != 0]
m = sum(a_selection)/len(a_selection)
可被3整除的情况相同:

b_selected = [elt for elt in b if elt%3==0]

除了创建仅包含非零元素的列表之外,您还可以对它们进行计数

non_zero_mean = sum(x) / sum(element != 0 for element in x)

这里,我使用的是Python中的数学观点,如C和C++的真值=1和false=0。 另一种选择是

non_zero_mean = sum(x) / (len(x) - x.count(0))

从c=[0,2,4,0,4,0,0,0,10],可以得到一个非零元素列表,其中[i代表c中的i,如果i]。它将返回[2,4,4,10]列表并非部分为空。如果你得到[80100]或[80100,0,0,0,0],你的平均音符会有很大的不同!如果为空,问题不要求筛选,但如果不是3的倍数。。。我不明白它应该是/lena_选项。@westgarthw正确吗