我在计算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:对于带有基数10的int()的无效文字:' somevalue'& #34 ;.可能是''
标志吗?
干杯!
答案 0 :(得分:2)
您是否需要将数据存储为字符串?您必须一次将它们转换为数字(浮点数)。这可以在没有for循环的情况下使用list comprehension完成:
Listofvalues1 = ['1', '2', '3', '4']
Listofvalues2 = ['5', '6', '7', '8']
Averagelist = [(float(v1)+float(v2))/2 for (v1, v2) in zip(Listofvalues1, Listofvalues2)]
答案 1 :(得分: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
答案 2 :(得分:0)
你的意思是(int(x)+ int(y))/ 2而不是(int(x)+ int(y)/ 2)?
答案 3 :(得分:0)
您可以尝试:
averages = [(float(e[0]) + float(e[1]))/2 for e in zip(Listofvalues1, Listofvalues2)]