计算平均值
我一直在为计算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'”。难道是''
的标志?
干杯!
要计算实际平均值而不将其向下舍入,请使用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
谢谢!它对我来说也很好。我在这里发布后,发现缺少一对括号。为什么浮动工作,但不是int? – user3223818 2014-09-01 13:50:51
Did you mean(int(x)+ int(y))/ 2而不是(int(x)+ int(y)/ 2)?
这会如何改变? – user3223818 2014-09-01 13:46:46
@ user3223818真的吗?尝试'2 + 2/4'和'(2 + 2)/ 4'并亲自查看。 – jonrsharpe 2014-09-01 13:49:09
您是否需要将数据存储为字符串?您将不得不一次将它们转换为数字(浮动)。这可以在没有一个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 2014-09-01 13:56:09
@ user3223818我明白了。所以你在循环内部做其他的东西?否则,你可以在zip(Listofvalues1,Listofvalues2)中尝试“(x,y): AVGvalue =((float(x)+ float(y))/ 2) Averagelist.append(AVGvalue)'' – Nras 2014-09-01 14:01:54
你可以试试:
averages = [(float(e[0]) + float(e[1]))/2 for e in zip(Listofvalues1, Listofvalues2)]
显示Listofvalues1'和'Listofvalues2'的'内容。 – Barmar 2014-09-01 13:38:01