2016-01-31 54 views
0

我有三个清单list1是“汽车模型”list2是“每加仑价格(mpg)”,list3是“一年的总价”。我能够遍历3列,但我不知道如何依次获得3列。请有人帮助我。先谢谢你!!如何遍历3个列表并获取Python中的3列?

继承人我的代码:

modelName = ['Toyota', 'Nissan', 'Honda'] 
fuelEfficiency = [15.0, 20.0, 30.0] 
for i in range(len(modelName)): 
print (modelName[i]) 

for i in range(len(fuelEfficiency)): 
print (fuelEfficiency[i]) 

priceGas = 2.41 

totalCost1 = (10000 * priceGas)/15.0 
totalCost2 = (10000 * priceGas)/20.0 
totalCost3 = (10000 * priceGas)/30.0 

print (totalCost1) 
print (totalCost2) 
print (totalCost3) 

我想输出是这样的:

MODEL COST(MPG) TOTALCOST 
Toyota 15.0  1606.66 
Nissan 20.0  1205.0 
Honda 30.0  803.33 

回答

2

试试这个:

modelName = ['Toyota', 'Nissan', 'Honda'] 
fuelEfficiency = [15.0, 20.0, 30.0] 
priceGas = 2.41 
totalCost1 = (10000 * priceGas)/15.0 
totalCost2 = (10000 * priceGas)/20.0  # totalCost = list(map(lambda x: (10000*priceGas)/x, fuelEfficiency)) 
totalCost3 = (10000 * priceGas)/30.0 
totalCost = [totalCost1, totalCost2, totalCost3] 

print("Model", "Cost(MPG)", "TOTALCOST") 
for x in range(3): 
    print(modelName[x], fuelEfficiency[x], totalCost[x]) 

更多更好的格式,使用format

+0

但是,这并不在Python 3.4 – HenryDev

+0

@Henry工作,将我更新的代码 – Hackaholic

+0

我得到这个错误信息,你更新之后: – HenryDev

1

我想下面的解决办法是更Python

modelName = ['Toyota', 'Nissan', 'Honda'] 
fuelEfficiency = [15.0, 20.0, 30.0] 
priceGas = 2.41 

totalcost = map(lambda x:(10000 * priceGas)/x,fuelEfficiency) 

for a,b,c in zip(modelName,fuelEfficiency,totalcost): 
    print a,b ,c 
1

既然你是在谈论循环的同时,我会强烈建议使用zip。看下面的例子!

modelName = ['Toyota', 'Nissan', 'Honda'] 
fuelEfficiency = [15.0, 20.0, 30.0] 
priceGas = 2.41 
totalCost1 = (10000 * priceGas)/15.0 
totalCost2 = (10000 * priceGas)/20.0 
totalCost3 = (10000 * priceGas)/30.0 
totalcost = [totalCost1, totalCost2, totalCost3] 

print ("Model", "Cost(MPG)", "TOTALCOST") 
for i in zip(modelName, fuelEfficiency, totalcost): 
    print (" ".join(map(str, list(i)))) 

OUTPUT:我正在运行Python3.4

Model Cost(MPG) TOTALCOST 
Toyota 15.0 1606.6666666666667 
Nissan 20.0 1205.0 
Honda 30.0 803.3333333333334 
+0

但我使用python 3.4和你的代码不工作..任何想法为什么? – HenryDev

+0

你现在可以试试吗?我更新了我的代码 – python

1

可以使用大熊猫在一个表样(又名数据帧)结构数据的工作。

import pandas as pd 

modelName = ['Toyota', 'Nissan', 'Honda'] 
fuelEfficiency = [15.0, 20.0, 30.0] 
priceGas = 2.41 

df = pd.DataFrame({'MODEL': modelName, 'COST(MPG)': fuelEfficiency}) 
df['TOTALCOST'] = (10000 * priceGas)/df['COST(MPG)'] 

print df[['MODEL', 'COST(MPG)', 'TOTALCOST']].to_string(index=False) 

这样做的好处是,如果你最终想要做更高级的数据操纵或格式化,也有很多在pandas.DataFrame数据结构方便的选项。

1

你可以试试这个。

modelName = ['Toyota', 'Nissan', 'Honda'] 
fuelEfficiency = [15.0, 20.0, 30.0] 
for i in range(len(modelName)): 
    print (modelName[i]) 

for i in range(len(fuelEfficiency)): 
    print (fuelEfficiency[i]) 

priceGas = 2.41 

totalCost=[0]*len(fuelEfficiency) 

for i in range(len(fuelEfficiency)): 
    totalCost[i]=(10000 * priceGas)/fuelEfficiency[i] 


print "Model  Cost  Totalcost" 
for i in range(len(fuelEfficiency)): 
    print modelName[i],fuelEfficiency[i],totalCost[i] 

根据您的需要排列输出。

1

因为你想要的每一列都有相同数量的项目,所以你只需要使用一个for循环。您还需要为此创建一个totalCost数组。

modelName = ['Toyota', 'Nissan', 'Honda'] 
fuelEfficiency = [15.0, 20.0, 30.0] 

priceGas = 2.41 

totalCost = [0, 0, 0] # Filler values 
totalCost[0] = (10000 * priceGas)/15.0 
totalCost[1] = (10000 * priceGas)/20.0 
totalCost[2] = (10000 * priceGas)/30.0 


for i in range(len(modelName)): 
    print modelName[i], fuelEfficiency[i], totalCost[i] 

这应该工作