2014-09-01 314 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)]