计算平均值

时间:2014-09-01 13:34:15

标签: python list average

我在计算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 ;.可能是''标志吗?

干杯!

4 个答案:

答案 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)]