将值乘以两个列表并将其打印出python

时间:2017-04-21 06:10:12

标签: python list python-3.x function

我正在尝试这样做,以便我可以将每个成本乘以相应的销售产品数量。例如,1.99 * 10,1.49 * 5等。此外,我似乎无法弄清楚如何根据列表中的成本打印出最昂贵或最便宜的产品的产品名称。我尝试将product_cost中的i与product_sold的相应i相乘,但答案似乎已经过时了。有没有人知道如何解决这个问题?感谢

但是,使用下面的代码,

# product lists
product_names = ["prime numbers", "multiplication tables", "mortgage calculator"]
product_costs = [1.99, 1.49, 2.49]
product_sold = [10, 5, 15]

def report_product():
    total = 0
    print("Most expensive product:", max(product_costs))
    print("Least expensive product:", min(product_costs))
    for i in range(len(product_costs)):
        total += i * product_sold[i]
    print("Total value of all products:", total)

selection = ""

while selection != "q":
    selection = input("(s)earch, (l)ist, (a)dd, (r)emove, (u)pdate, r(e)port or (q)uit: ")

    if selection == 'q':
        break
    elif selection == 's':
        search_product()
    elif selection == "l":
        list_products()
    elif selection == "a":
        add_products()
    elif selection == "r":
        remove_products()
    elif selection == "u":
        update_products()
    elif selection == "e":
        report_product()
    else:
        print("Invalid option, try again")

print("Thanks for looking at my programs!")

3 个答案:

答案 0 :(得分:1)

虽然不一定是最佳选择,但您可以使用zip()

以最少的代码获得答案
def report_product():

    print('Most expensive product:', max(zip(product_costs, product_names))[1])

    print('Least expensive product:', min(zip(product_costs, product_names))[1])

    total_earned = sum(cost * sold for cost, sold in zip(product_costs, product_sold))

    print('Total earned from all products sold: ${:.2f}'.format(total_earned))

<强>输出

Most expensive product: mortgage calculator
Least expensive product: multiplication tables
Total earned from all products sold: $64.70

答案 1 :(得分:0)

要获得相应指数的新数组,

product_costs = [1.99, 1.49, 2.49]
product_sold = [10, 5, 15]
product_mult = list(map(lambda x,y: x*y, product_costs,product_sold))

要查找哪个产品最贵的名称,

index = product_costs.index(max(product_costs))
most_expensive = product_names[index]

答案 2 :(得分:0)

>>> prod_m = [a*b for a,b in zip(product_costs, product_sold)]
>>> prod_m
[19.9, 7.45, 37.35]
>>> product_names[product_costs.index(max(product_costs))]
'mortgage calculator'
>>> product_names[product_costs.index(min(product_costs))]
'multiplication tables'

你也可以使用numpy来乘以两个列表。

>>> import numpy
>>> list(numpy.array(product_costs)*numpy.array(product_sold))
[19.899999999999999, 7.4500000000000002, 37.350000000000001]