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

Python实现嵌套列表对应位置求和(单循环/无循环/不使用直接函数)

Python实现嵌套列表对应位置元素求和

需求说明

  • 核心功能:接收二维嵌套列表作为输入,对所有子列表相同索引位置的元素做累加,最终返回一维累加结果列表
  • 验证用例:
    • 输入[[1,2,3],[1,2,3]],预期输出[2,4,6]
    • 输入[[1,1,1],[2,2,2],[3,3,3]],预期输出[6,6,6]
  • 实现约束:提供单循环、无显式循环两种实现方案,尽量不直接调用内置求和类函数

方案1:单循环实现

实现逻辑:先初始化和子列表等长的全0结果列表,对外层嵌套列表做遍历,逐位将当前子列表的元素累加到结果列表的对应索引位置,全程不调用sum()等内置求和函数。

def pos_sum_single_loop(nested_arr):
    # 初始化结果容器,长度匹配子列表长度,初始值为0
    result = [0] * len(nested_arr[0])
    for sub_arr in nested_arr:
        # 按索引对位累加,无额外求和函数调用
        for i in range(len(sub_arr)):
            result[i] += sub_arr[i]
    return result

# 用例测试
print(pos_sum_single_loop([[1,2,3],[1,2,3]]))       # 输出 [2,4,6]
print(pos_sum_single_loop([[1,1,1],[2,2,2],[3,3,3]])) # 输出 [6,6,6]

方案2:无显式循环实现(递归实现)

实现逻辑:不写任何for/while显式循环语句,通过递归拆分嵌套列表,逐次对两个列表做对位相加,最终得到累加结果,全程不调用内置求和函数。

def two_list_add(a, b):
    # 递归实现两个等长列表对位相加
    if not a:
        return []
    return [a[0] + b[0]] + two_list_add(a[1:], b[1:])

def pos_sum_no_loop(nested_arr):
    # 递归终止条件:只剩最后一个子列表直接返回
    if len(nested_arr) == 1:
        return nested_arr[0]
    # 递归累加前n-1个列表的结果,和当前最后一个列表对位相加
    return two_list_add(pos_sum_no_loop(nested_arr[:-1]), nested_arr[-1])

# 用例测试
print(pos_sum_no_loop([[1,2,3],[1,2,3]]))       # 输出 [2,4,6]
print(pos_sum_no_loop([[1,1,1],[2,2,2],[3,3,3]])) # 输出 [6,6,6]

注:以上实现默认输入的所有子列表长度一致,匹配题目给出的输入场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:31:01