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

如何仅使用len()内置函数实现数组首尾对应求和(None视为0)?

解决方案:按规则合并两个数组并仅使用len()内置函数

实现代码

array_1 = [1, 4, 5, 8, None, None, None]
array_2 = [7, 4, 8, 9, 5, None, None]

array_3 = []
for i in range(len(array_1)):
    # 处理array_1的当前元素,None转为0
    val1 = array_1[i] if array_1[i] is not None else 0
    # 找到array_2对应的位置:从末尾开始第i+1个元素
    val2_idx = len(array_2) - 1 - i
    val2 = array_2[val2_idx] if array_2[val2_idx] is not None else 0
    # 求和并加入结果数组
    array_3.append(val1 + val2)

print(f"array_3 = {array_3}")

运行后输出:

array_3 = [1, 4, 10, 17, 8, 4, 7]

原代码的问题分析

  1. 双层循环错误:你用了两层for循环,会让每个array_1的元素和多个array_2的元素配对求和,完全不符合题目要求的一对一对应规则,只需要单层循环遍历每个索引即可。
  2. 判断对象错误:代码里判断i == None和j == None,但i和j是循环索引(整数),永远不可能是None,应该判断数组中对应位置的元素是否为None。
  3. 未收集结果:原代码只是打印每次的求和值,没有将结果整理成目标数组array_3。

关键逻辑说明

  • 对于每个索引i,array_2对应的元素位置是len(array_2) - 1 - i:比如i=0时对应array_2的最后一个元素(索引6),i=1对应索引5,以此类推,完全匹配题目要求的“首个元素与末尾元素开始依次对应”的规则。
  • 用三元表达式将None转为0,不需要修改原数组,直接计算对应值即可。
  • 整个过程仅使用了len()这一个内置函数,符合题目限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 00:45:16