Python 如何从这个平均值函数中排除零?
我正在计算一个列表的平均值,并将其设置为这样,函数也会从列表中排除零(因为不可能被零除) 我尝试了几种方法,这是我最成功的方法,但它会计算出总数 我做了一个工作函数,但我不知道如何排除零 以下是我尝试过的:Python 如何从这个平均值函数中排除零?,python,python-3.x,Python,Python 3.x,我正在计算一个列表的平均值,并将其设置为这样,函数也会从列表中排除零(因为不可能被零除) 我尝试了几种方法,这是我最成功的方法,但它会计算出总数 我做了一个工作函数,但我不知道如何排除零 以下是我尝试过的: list_value = [5, 3, 8, 0, 4, 5, 1, 0, 14, 10] ''' test code ''' mean_out = mean(list_value) print (mean_out) #---> Prints
list_value = [5, 3, 8, 0, 4, 5, 1, 0, 14, 10]
'''
test code
'''
mean_out = mean(list_value)
print (mean_out) #---> Prints 55.0
这是一个有效的函数,但不会从列表中排除零:
def mean(list_value):
sum = 0
mean_out = len(list_value)/sum
return mean_out
问题是:在不使用列表理解的情况下,如何从均值函数中排除零
list_value_without_zero = [x for x in list_value if x != 0]
试试这样的
list_value_without_zero = [x for x in list_value if x != 0]
第一个的问题是,计算的是非零值之和,但使用的是所有值的长度。只需使用count计算非零值的长度,就可以了。因此,如果i!使用count和do count+=1,而不是“len(list_value)”=0第一个问题是,计算的是非零值之和,但使用的是所有值的长度。只需使用count计算非零值的长度,就可以了。因此,如果i!使用count和do count+=1,而不是“len(list_value)”=你做得对。你只需要注释掉一行-
list_value = [5, 3, 8, 0, 4, 5, 1, 0, 14, 10]
def mean(list_value):
sum = 0
for i in list_value:
if i != 0:
print(i)
sum += 1 / i
# list_value.append(i)
return len(list_value)/sum
mean_out = mean(list_value)
print (mean_out)
list\u value.append(i)-在这里,您将值追加回原始列表,这就是循环永不结束的原因。您做得对。你只需要注释掉一行-
list_value = [5, 3, 8, 0, 4, 5, 1, 0, 14, 10]
def mean(list_value):
sum = 0
for i in list_value:
if i != 0:
print(i)
sum += 1 / i
# list_value.append(i)
return len(list_value)/sum
mean_out = mean(list_value)
print (mean_out)
list_value.append(i)-这里您将值追加回原始列表,这就是循环永不结束的原因。如果不理解列表,要从列表中删除所有
0
,您可以执行以下操作:
list\u value\u不带\u zero=list\u value.copy()
当列表中的值为0而没有值为0时:
列出不带0的值。删除(0)
不理解列表,要从列表中删除所有0
,您可以执行以下操作:
list\u value\u不带\u zero=list\u value.copy()
当列表中的值为0而没有值为0时:
列出不带0的值。删除(0)
为什么将mean\u out=…
和return mean\u out
的计算移动到for循环内?为什么将mean\u out=…
和return mean\u out
的计算移动到for循环内?