如何对嵌套列表使用递归实现加减乘除四则运算?
嵌套列表四则运算的递归实现方案
核心思路
- 所有嵌套的子列表本质上都是待求值的子表达式,运算前先递归计算所有子表达式得到纯数值,再执行当前层级的运算即可
- 运算顺序天然符合嵌套层级的优先级:越深的子列表越先被计算
代码实现(Python)
def calc(expr): # 当前元素不是列表,说明是普通数值,直接返回 if not isinstance(expr, list): return expr # 递归求值两个操作数,不管是数值还是嵌套列表,都能得到最终数值 op, num1, num2 = expr[0], calc(expr[1]), calc(expr[2]) if op == 'add': return num1 + num2 elif op == 'sub': return num1 - num2 elif op == 'mul': return num1 * num2 elif op == 'div': # 可根据需求调整为整数除//或者浮点数除/ return num1 / num2 else: raise ValueError(f"不支持的操作符:{op}")
测试示例
# 单层运算测试 print(calc(['add', 12, 12])) # 输出 24 # 两层嵌套测试 print(calc(['add', 12, ['add', 12, 12]])) # 输出 36 # 三层嵌套测试 print(calc(['add', 12, ['mul', 6, ['sub', 6, 4]]])) # 输出 12 + 6*(6-4) = 24
扩展说明
如果后续需要增加更多操作符(比如取余mod、幂运算pow等),只需要在判断分支中新增对应运算逻辑即可,不需要修改递归部分的代码。
内容的提问来源于stack exchange,提问作者Brady
相关产品推荐
相关产品推荐

