Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从这个平均值函数中排除零?_Python_Python 3.x - Fatal编程技术网

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循环内?