python - 计算列表中所有大于或等于 50 的数字的平均值?

标签 python list list-comprehension average

我想返回一个函数,它给出所有 50 或更多分数的平均值。当我运行我的代码时,它总是返回一个空列表。

这是我尝试过的:

def get_pass_average(marks):
    average = []
    for count in marks:
        if count >= 50:
           average = sum(count) / len(count)          
    return round(average,2)

def test_get_pass_average():
    list1 = [50, 83, 26, 65, 92, 29, 77, 64]
    print('%.2f' % (get_pass_average(list1)))

请帮我找出代码中的问题,输出应该是71.83

最佳答案

试试这个:

l=[i for i in list1 if i>=50]
print(sum(l)/len(l))

或者:

from statistics import mean
l=[i for i in list1 if i>=50]
print(mean(l))

如果要为空列表设置条件:

l=[i for i in list1 if i>=50]
if l:
    print(sum(l)/len(l))

或者:

from statistics import mean
l=[i for i in list1 if i>=50]
if l:
    print(mean(l))

对于 python 2:

print(sum(l)/len(l))

应该是:

print(float(sum(l))/float(len(l)))

并且没有统计模块。

您的代码不起作用,因为您对迭代器(整数)而不是列表求和,所以这就是它不起作用的原因

关于python - 计算列表中所有大于或等于 50 的数字的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52464451/

相关文章:

python - 循环与列表理解与其他方法的速度/效率比较

python - 在Python中解析字典中的列表

python - CSV 写行数据

Python,如何将 x;y 点列表定义的样条转换为 NURB 曲线

python - 如何同时迭代两个变量?

python - 如何更改此代码以检查输入单词是否与另一个单词(填字游戏)相交?

JAVA,列表列表

python - NLTK 布朗语料库标签

python - 从 Python virtualenv 运行 OpenCV

Erlang 列表推导,遍历两个列表并排除值