如何仅使用列表推导式实现书店订单嵌套列表的元素更新
用列表推导式实现订单总价计算
嘿,这事儿好办!我把你原来用循环实现的订单总价计算逻辑,改成纯列表推导式的版本了,完全能得到和之前一致的输出结果:
orders = [ [1, ("5464", 4, 9.99), ("8274",18,12.99), ("9744", 9, 44.95)], [2, ("5464", 9, 9.99), ("9744", 9, 44.95)], [3, ("5464", 9, 9.99), ("88112", 11, 24.99)], [4, ("8732", 7, 11.99), ("7733", 11,18.99), ("88112", 5, 39.95)] ] # 纯列表推导式实现需求逻辑 m1_list = [ [order[0]] + [ (book_id, quantity * price + 10 if quantity * price < 100 else quantity * price) for book_id, quantity, price in order[1:] ] for order in orders ] print(m1_list)
代码逻辑说明:
- 外层列表推导式遍历每个订单
order,先保留订单编号order[0] - 内层列表推导式处理订单里的每一个图书条目:
- 解包元组得到图书编号
book_id、数量quantity和单价price - 计算基础总价
quantity * price,如果总价小于100就额外加10,否则直接使用基础总价 - 将图书编号和最终总价组成新元组,收集到内层列表中
- 解包元组得到图书编号
- 用
+把订单编号和处理后的图书条目列表拼接成完整的订单数据,最终所有订单组成结果列表m1_list
运行这段代码后,你会得到和之前循环版本完全一样的输出结果哦!
内容的提问来源于stack exchange,提问作者Jason Leng
相关产品推荐
相关产品推荐

