我有一个代码可以获取人们想要的列表并将其存储到一个大型列表中。我想要做的是为主列表中的每个子列表,找到最后一项的总和,在这种情况下,每个子列表只有4个对象[产品名称,单位,成本,价格],然后乘以它由单位数量。我正在考虑尝试它:
for item in mainList:
expectedProfit = (sum(item[3])) * (item[1])
有没有一种更干净的方法可以偶然地做到这一点,或者我的方法是什么?
答案 0 :(得分:2)
使用生成器表达式进行乘法运算,然后将结果传递给sum()
:
expected_profit = sum(item[-1] * item[1] for item in mainList)
因此,对于mainList
中的每个项目,它会将最后一项(价格)乘以单位数(item[1]
),然后将所有项目相加。
演示:
>>> mainList = [
... # product, count, cost, price
... ['Frobnar', 3, 2.55, 4],
... ['Fooznib', 20, 0.66, 2.5],
... ['Spam (canned)', 5, 3.98, 6.99],
... ]
>>> sum(item[-1] * item[1] for item in mainList)
96.95