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

Python中实现基于双数组迭代生成累加数组Z的函数需求

Python函数实现按规则生成数组Z

实现思路

根据需求,数组Z的第一个元素是常量c,后续每个元素Z[n]等于前一个元素Z[n-1]加上对应位置X[n-1] - Y[n-1]的差值。核心是累加差值序列,从初始值c开始逐步构建结果数组。

方法一:基础循环实现

这种方式逻辑直观,适合理解每一步的计算过程:

def generate_Z(X, Y, c):
    # 校验X和Y的长度一致性
    if len(X) != len(Y):
        raise ValueError("数组X和Y的长度必须相同")
    
    Z = [c]
    for x, y in zip(X, Y):
        next_val = Z[-1] + (x - y)
        Z.append(next_val)
    return Z

方法二:用itertools.accumulate简化实现

借助Python标准库的itertools.accumulate可以更紧凑地完成累加操作:

from itertools import accumulate

def generate_Z(X, Y, c):
    if len(X) != len(Y):
        raise ValueError("数组X和Y的长度必须相同")
    
    # 先计算所有X[i]-Y[i]的差值
    diffs = [x - y for x, y in zip(X, Y)]
    # 从c开始累加差值序列,转换为列表
    return list(accumulate([c] + diffs, lambda a, b: a + b))

测试示例

# 测试用例
X = [1, 2, 3]
Y = [0, 1, 1]
c = 5

print(generate_Z(X, Y, c))  # 输出: [5, 6, 7, 9]

边界情况说明

  • 若X和Y为空数组,函数返回仅包含c的数组[c]
  • 若X和Y长度不匹配,函数会抛出ValueError提示错误

内容的提问来源于stack exchange,提问作者Djim M. L. DIONGUE

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 01:15:11