【问题标题】:how to loop through 3 lists and get 3 columns in Python?如何在 Python 中遍历 3 个列表并获取 3 列?
【发布时间】:2016-01-31 14:13:51
【问题描述】:

我有三个列表 list1 是“汽车型号” list2 是“每加仑的价格 (mpg)”,而 list3 是“一年的总价”。我可以遍历 3 列,但我不知道如何依次获取 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

【问题讨论】:

    标签: python


    【解决方案1】:

    试试这个:

    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

    【讨论】:

    • 回溯(最近一次调用最后):文件“/Users/he/Documents/program2.py”,第 7 行,在 中 totalcost = [totalcost1, totalcost2, totalcost3] NameError: name ' totalcost1' 未定义
    • 哦抱歉区分大小写,它的totalCost1,C是大写
    • @Hackraholic 谢谢!
    【解决方案2】:

    因为你想要的每一列都有相同数量的项目,你只需要使用一个 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]
    

    这应该可以工作

    【讨论】:

      【解决方案3】:

      我认为下面的解决方案更 Pythonic

      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 
      

      【讨论】:

        【解决方案4】:

        您可以使用 pandas 处理类似表格(又名 DataFrame)结构中的数据。

        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 数据结构中有很多方便的选项。

        【讨论】:

          【解决方案5】:

          你可以试试这个。

          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]
          

          根据需要安排输出。

          【讨论】:

            【解决方案6】:

            既然你在谈论循环并行,我强烈建议使用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))))
            

            输出:我正在运行 Python3.4

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

            【讨论】:

            • 但我使用 python 3.4 并且您的代码无法正常工作.. 任何想法为什么?
            猜你喜欢
            • 1970-01-01
            • 2018-11-26
            • 1970-01-01
            • 2016-03-22
            • 2015-09-21
            • 1970-01-01
            • 2019-03-17
            • 2017-07-05
            • 1970-01-01
            相关资源
            最近更新 更多