2014-09-01 4 views
-1

두 개의 다른 목록에있는 값의 평균을 계산하는 데 어려움을 겪었습니다. 다음은 제가 파이썬에서 초보자로서했던 것입니다 :계산 평균

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 : base 10 인 int()에 대한 리터럴이 잘못되었습니다 : 'somevalue'"오류가 발생합니다. '' 표지가 ​​될 수 있습니까?

건배!

+0

는 Listofvalues1'과'Listofvalues2''의 내용을 표시합니다. – Barmar

답변

1

반올림하지 않고 실제 평균을 계산하려면 float를 사용하십시오. 또한 다른 괄호 쌍이 필요합니다. 그렇지 않으면 (x + y/2)가 아닌 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

감사! 그것은 나를 위해 잘 작동했습니다. 나는 여기에 게시 한 직후에 한 쌍의 괄호가 없다는 것을 알아 냈다. float가 작동하지만 int가 아닌 이유는 무엇입니까? – user3223818

0

(int (x) + int (y)/2) 대신에 (int (x) + int (y))/2를 사용하셨습니까?

+0

어떻게 달라질 수 있습니까? – user3223818

+0

@ user3223818 정말요? '2 + 2/4'와'(2 + 2)/4'을 시도해보고 직접보십시오. – jonrsharpe

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 파일에서 값을 grepping하고 목록에 저장하고 있습니다. 그래서 그들은 이미 문자열입니다. 하지만 통찰력을 주셔서 감사합니다! – user3223818

+0

@ user3223818 알겠습니다. 그래서 내부 for 루프에서 다른 것들을하고 있습니까?AVGvalue = ((float (x) + float (y))/2) Averagelist.append (AVGvalue)''(x, y) – Nras

0

당신은 시도 할 수 있습니다 :

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