You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何对两个非均匀嵌套列表进行逐元素相减运算?

非均匀嵌套列表的逐元素相减实现

给定两个结构一致的非均匀嵌套数值列表:

lst1 = [0.1, [0.2, 0.3], [0.4, 0.5, 0.6, [0.7, 0.8], 0.9]]
lst2 = [0.1, [0.1, 0.1], [0.1, 0.1, 0.1, [0.1, 0.1], 0.1]]

需要实现逐元素相减运算,得到目标结果:

[0.1, [0.1, 0.2], [0.3, 0.4, 0.5, [0.6, 0.7], 0.8]]

解决方案:递归处理嵌套结构

由于列表是不均匀嵌套的,我们可以通过递归函数遍历每个元素,根据元素类型做不同处理:如果是列表则递归进入下一层,否则直接执行减法运算。

实现代码如下:

def nested_subtract(a, b):
    result = []
    for x, y in zip(a, b):
        if isinstance(x, list) and isinstance(y, list):
            result.append(nested_subtract(x, y))
        else:
            result.append(x - y)
    return result

lst1 = [0.1, [0.2, 0.3], [0.4, 0.5, 0.6, [0.7, 0.8], 0.9]]
lst2 = [0.1, [0.1, 0.1], [0.1, 0.1, 0.1, [0.1, 0.1], 0.1]]

output = nested_subtract(lst1, lst2)
print(output)

运行代码后,输出结果与预期一致:

[0.1, [0.1, 0.2], [0.3, 0.4, 0.5, [0.6, 0.7], 0.8]]

注意事项

  • 必须保证两个输入列表的结构完全匹配:每个位置的元素要么都是同层级嵌套的列表,要么都是数值,否则会触发类型错误。
  • 浮点数运算存在天然精度问题,比如0.1这类数值无法被二进制精确表示,若需要高精度计算,可使用Python的decimal模块替代原生浮点数操作。

内容的提问来源于stack exchange,提问作者therickster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:27:13