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
相关产品推荐
相关产品推荐

