2015-09-02 39 views
0

我正在下面的代碼中導入labdata.txt。對於語句,如i的值:將在給定參數中添加每個變量。對於每組參數,例如[1,3,4,] [3,5,7],[67,56,56],我的目標是例如添加[1] + [3] + [67] 。然後獲得這三個項目的平均值。在Python中導入.txt文件後,在列表[x]中爲列表[x]添加特定項目

不清楚的部分是如何採取x = values[:1],然後以某種方式讓它在x上添加變量,如上所述的不同參數。

這裏是到目前爲止的代碼:

 
    lab_data = open("labdata.txt", "r") #import text 
    x = 0 # initialize variable 
    y = 0 # initialize variable 
    for aline in lab_data: 
     values = aline.split() 
     values = [int (u) for u in values] 
     print (values) 
     x = values[:1] 
     y = values[1:2] 
     print (x) 
     #print (y) 
     average = 0 
     ui = 0 
     other = 0 
     bs = 0 
     # print (sum(values[:1])) 
    for z in values[:1]: 
     other = (sum(values[:1])) 
     bs = bs + other 
     print (bs)

#print (sum(values[:1])) ui = ui + z average = ui/len(values)#this just gives the avg of x print (average) </pre>
+1

問題很不清楚。 – taesu

+0

你能提供一個樣本labdata.txt嗎? –

回答

2

讓我回答這個非常不清晰的問題
我認爲你的問題是:如何從三個不同的列表

lst1 = [1, 3, 4] 
lst2 = [3, 5, 7] 
lst3 = [67, 56, 56] 

avg1 = sum([lst1[0],lst2[0],lst3[0]])/3 
avg2 = sum([lst1[1],lst2[1],lst3[1]])/3 
avg3 = sum([lst1[2],lst2[2],lst3[2]])/3 

print avg1,avg2,avg3 
+0

爲什麼downvote? –

+0

我不知道爲什麼downvoted是什麼原因,但我很傷心。 – taesu

+0

這是一個廣義的解決方案嗎? –

0

讓得到的平均每個列表具有相同的長度,這是我的解決方案:

lst1 = [1, 2, 3] 
lst2 = [3, 4, 5] 
lst3 = [3, 2, 1] 

# list "lst" will contain the results for every index 
lst =[] 

for i in range(len(lst1)): 
    lst.append(lst1[i]/3 + lst2[i]/3 + lst3[i]/3) 

print lst 
+0

可能想要'len(lst1)'而不是'3',如果你想玩'廣義解決方案'遊戲? – taesu

0

我猜你想要的東西是一樣的東西:

lab_data = open("labdata.txt", "r") #import text 
int_data = [[int(val) for val in line.split()] for line in lines] 

def mean(args): return float(sum(args))/len(args) 
means = [] 
for i in range(0, len(int_data[0])): 
    means.append(mean([row[i] for row in int_data])) 
1

如果您正在使用python3,您可以使用statistics.mean拉鍊:

lst1 = [1, 3, 4] 
lst2 = [3, 5, 7] 
lst3 = [67, 56, 56] 

from statistics import mean 

a, b, c = map(mean, zip(lst1, lst2, lst3)) 

print(a, b, c) 

對於python2創建自己的均值函數:

from itertools import imap, izip 

def mean(x): 
    return sum(x)/float(len(x)) 

a, b, c = imap(mean, izip(lst1, lst2, lst3)) 

print(a, b, c) 
相關問題