【问题标题】:Calculating averages计算平均值
【发布时间】:2014-09-01 13:34:15
【问题描述】:

我一直在努力计算 2 个不同列表中的值的平均值。这是我一直在做的事情(作为python中的新手):

Averagelist = []
Listofvalues1 = ['1', '2', '3', '4']
Listofvalues2 = ['5', '6', '7', '8']

for i, x in enumerate(Listofvalues1):
    for j, y in enumerate(Listofvalues2):
        if j == i:
            AVGvalue = (int(x)+int(y)/2)
            Averagelist.append(AVGvalue)

我自己想出了这个方法。它可能没用,但到目前为止,我可以打印两个我想用于计算的值,但我收到一个错误“ValueError:int() 的无效文字,基数为 10:'somevalue'”。会不会是'' 标志?

干杯!

【问题讨论】:

  • 显示Listofvalues1和Listofvalues2的内容。

标签: python list average


【解决方案1】:

您需要将数据存储为字符串吗?您必须一次将它们转换为数字(浮点数)。这可以在没有 for 循环的情况下使用列表理解来完成:

Listofvalues1 = ['1', '2', '3', '4']
Listofvalues2 = ['5', '6', '7', '8']
Averagelist = [(float(v1)+float(v2))/2 for (v1, v2) in zip(Listofvalues1, Listofvalues2)]

【讨论】:

  • 我发布的代码更复杂。我实际上是从 2 个文件中提取值并存储在一个列表中。这就是为什么它们已经是一个字符串。但感谢您的洞察力!
  • @user3223818 我明白了。所以你正在内部 for 循环中做其他事情?否则你可以试试for (x, y) in zip(Listofvalues1, Listofvalues2): AVGvalue = ((float(x)+float(y))/2) Averagelist.append(AVGvalue)
【解决方案2】:

要计算实际平均值而不进行四舍五入,请使用浮点数。此外,您还需要一对额外的括号,否则它将是 y/2 而不是 (x+y/2)。

至于那个错误,我不确定您在 Listofvalues 列表中使用什么作为输入,以下对我来说效果很好。

Averagelist = []
Listofvalues1 = [1,2]
Listofvalues2 = [6,7]

for i, x in enumerate(Listofvalues1):
    for j, y in enumerate(Listofvalues2):
        if j == i:
            AVGvalue = ((float(x)+float(y))/2)
            Averagelist.append(AVGvalue)

print Averagelist

【讨论】:

  • 谢谢!它对我来说也很好。在这里发布后,我发现缺少一对括号。为什么 float 有效但 int 无效?
【解决方案3】:

您的意思是 (int(x)+int(y))/2 而不是 (int(x)+int(y)/2)?

【讨论】:

  • 这会有什么不同?
  • @user3223818 真的吗?试试2 + 2 / 4 和(2 + 2) / 4 看看吧。
【解决方案4】:

你可以试试:

averages = [(float(e[0]) + float(e[1]))/2 for e in zip(Listofvalues1, Listofvalues2)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-14
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多