【问题标题】:Combining averages of two lists结合两个列表的平均值
【发布时间】:2015-11-01 19:54:49
【问题描述】:

假设我有这个功能:

def avg_grams(l: list) -> float:
    ''' Returns the average grams of parameter list
    '''
    result = 0
    for x in C:
        result += float(x.calories)
    return result / len(l)

该函数应该返回给定克数列表中的平均克数。但是,如果我有两个列表,如何使用此函数来求两个列表的总体平均值?

例如:

List A: [2, 3, 4] - Average: 3
List B: [3, 4, 5] - Average: 4
Overall avg: 3.5

【问题讨论】:

  • avg_grams(A + B)?

标签: python list average


【解决方案1】:

这个怎么样?

A)

def avg_grams(lists):
    """Returns the average grams of parameter list """
    sums = [sum(l) / float(len(l)) for l in lists]
    overall_sum = sum(sums) / float(len(sums))
    return sums, overall_sum

a = [2, 3, 4]
b = [3, 4, 5]

print('Sums: {} \noverall sum: {}'.format(*avg_grams((a, b))))

输出:

Sums: [3.0, 4.0] 
overall sum: 3.5

B)

或者,如果您对单个总和不感兴趣,试试这个:

def avg_grams(some_list):
    """ Returns the average grams of parameter list """
    return sum(some_list) / float(len(some_list))

a = [2, 3, 4]
b = [3, 4, 5]

print('overall sum: {}'.format(avg_grams(a+b)))

输出:

overall sum: 3.5

注意:

A 和 B 可以产生不同的结果,这取决于列表是否具有不同的长度;这真的取决于你想要完成什么,加权平均值或所有项目(来自所有列表)组合的平均值

【讨论】:

    【解决方案2】:

    您可以写avg_grams(A+B),但如果AB 的长度不同,这可能不会有理想的结果。

    PS 你的变量名需要清理一下,例如你使用的是C,它没有在任何地方定义,你正在寻找x.calories,而你的例子使用了一个简单的整数列表。

    【讨论】:

    • 列表的不同长度与计算它们的平均值有什么关系?还要澄清avg_grams(A + B)的意思
    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 2018-11-18
    • 2023-03-10
    相关资源
    最近更新 更多