2016-10-11 58 views
-1

虽然我已经学习了大部分基本知识,但是我需要能够从csv文件中读取数据(目前为止),然后将数据从此csv追加到列表中工作,我不确定的部分是使用这些列表中的两个和/ 120和* 100未解决的Python列表

例如,list1的第一个分数是55,list2是51,我想将它们合并到一个列表中以等于106然后添加一些可以分割每个时间的东西,因为每个列表中有7个不同的数字。

import csv 
list1 = [] 
list2 = [] 
with open("scores.csv") as f: 
reader = csv.reader(f) 
for row in reader: 

    list1.append(row[1]) 
    list2.append(row[2]) 
print (list1) 
print (list2) 

OUTPUT

['55', '25', '40', '21', '52', '42', '19'] 

['51', '36', '50', '39', '53', '33', '40'] 

期望输出(WANTED OUTPUT)

['106', '36', '90', '60', '105', '75', '59'] 

然后需要通过120和×100的每个一个分割。

回答

0

结账zip

for a, b in zip(list1, list2): 
    # .... do stuff 

所以你也许:

output = [((int(a)+int(b))/120)*100 for a, b in zip(list1, list2)] 
+0

a和b是什么意思? – 1230

+0

'zip'函数将沿着两个列表产生每个值,直到耗尽最短的值。在你的例子中,第一次迭代a ='55'和b ='51'。然后在第二次迭代中,a = '25'和b = '36'等。 –

+0

将整个数字的百分比作为最好的方法是什么,因为它们用atm打印很多小数? – 1230

0

建立一个新的列表需要您所需的计算进去。

>>> list1 = ['55', '25', '40', '21', '52', '42', '19'] 
>>> list2 = ['51', '36', '50', '39', '53', '33', '40'] 
>>> result = [(int(x)+int(y))/1.2 for x,y in zip(list1, list2)] 
>>> result 
[88.33333333333334, 50.833333333333336, 75.0, 50.0, 87.5, 62.5, 49.16666666666667] 
+0

列表1和2没有硬编码到程序中,它们来自csv文件,我试过使用第3行,并且它返回的输出就像[] – 1230

+0

@ 1230 - 最后,当你有'list1'和' list2',它打印你描述的输出,将它们处理成如图所示的结果。 – TigerhawkT3

+0

什么会使他们的格式例如88%,没有小数的51%,所以只需输入 – 1230