【发布时间】:2018-01-09 13:15:11
【问题描述】:
我希望标题有意义。我想要实现的是获得鞋子的加权平均价格,这些鞋子以不同的价格和不同的数量提供。所以我有例如:
list_prices = [12,12.7,13.5,14.3]
list_amounts = [85,100,30,54]
BuyAmount = x
我想知道我的加权平均价格,以及我为每只鞋支付的最高价格如果我购买 x 数量的鞋(假设我想先买最便宜的)
这就是我现在所拥有的(我使用 numpy):
if list_amounts[0] >= BuyAmount:
avgprice = list_prices[0]
highprice = list_prices[0]
elif (sum(list_amounts[0: 2])) >= BuyAmount:
avgprice = np.average(list_prices[0: 2], weights=[list_amounts[0],BuyAmount - list_amounts[0]])
highprice = list_prices[1]
elif (sum(list_amounts[0: 3])) >= BuyAmount:
avgprice = np.average(list_prices[0: 3], weights=[list_amounts[0],list_amounts[1],BuyAmount - (sum(list_amounts[0: 2]))])
highprice = list_prices[2]
elif (sum(list_amounts[0: 4])) >= BuyAmount:
avgprice = np.average(list_prices[0: 4], weights=[list_amounts[0],list_amounts[1],list_amounts[2],BuyAmount - (sum(list_amounts[0: 3]))])
highprice = list_prices[3]
print(avgprice)
print(highprice)
此代码有效,但可能过于复杂和扩展。特别是因为我希望能够处理包含 20 多件商品的数量和价格清单。
有什么更好的方法来做到这一点?
【问题讨论】:
标签: python list numpy average weighted