2014-09-01 229 views
-1

我一直在为计算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'”。难道是''的标志?

干杯!

+0

显示Listofvalues1'和'Listofvalues2'的'内容。 – Barmar 2014-09-01 13:38:01

回答

1

要计算实际平均值而不将其向下舍入,请使用float。你还需要一对额外的括号,否则它会是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 
+0

谢谢!它对我来说也很好。我在这里发布后,发现缺少一对括号。为什么浮动工作,但不是int? – user3223818 2014-09-01 13:50:51

0

Did you mean(int(x)+ int(y))/ 2而不是(int(x)+ int(y)/ 2)?

+0

这会如何改变? – user3223818 2014-09-01 13:46:46

+0

@ user3223818真的吗?尝试'2 + 2/4'和'(2 + 2)/ 4'并亲自查看。 – jonrsharpe 2014-09-01 13:49:09

2

您是否需要将数据存储为字符串?您将不得不一次将它们转换为数字(浮动)。这可以在没有一个for循环来完成,使用列表理解:

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

我发布的代码更复杂。我实际上是从2个文件中挑选值并存储在一个列表中。这就是为什么他们已经是一个字符串。但是,谢谢你的洞察力! – user3223818 2014-09-01 13:56:09

+0

@ user3223818我明白了。所以你在循环内部做其他的东西?否则,你可以在zip(Listofvalues1,Listofvalues2)中尝试“(x,y): AVGvalue =((float(x)+ float(y))/ 2) Averagelist.append(AVGvalue)'' – Nras 2014-09-01 14:01:54

0

你可以试试:

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