如何在Python中实现按指定间隔累加列表元素的通用方法?
解决方案
要实现这个通用的累加逻辑,核心是根据指定间隔数(即初始元素的个数),将后续元素按位置对应累加到初始元素上。具体实现如下:
逻辑分析
假设间隔为n:
- 取列表前
n个元素作为初始结果集 - 从第
n个索引(从0开始计数)的元素起,每个元素的索引对n取余,得到对应的初始元素位置,将该元素值累加到结果集的对应位置
代码实现
def accumulate_by_interval(lst, interval): if interval <= 0 or len(lst) < interval: return [] result = lst[:interval].copy() for i in range(interval, len(lst)): idx = i % interval result[idx] += lst[i] return result
测试示例
示例1
输入列表:[5, 12, 4, 6, 8, 2],间隔为2
print(accumulate_by_interval([5, 12, 4, 6, 8, 2], 2)) # 输出: [17, 20]
示例2
输入列表:[4, 2, 3, 1, 5, 6],间隔为3
print(accumulate_by_interval([4, 2, 3, 1, 5, 6], 3)) # 输出: [5, 7, 9]
说明
- 先做合法性校验:间隔不能为非正数,且列表长度需不小于间隔数,否则返回空列表
- 用
copy()避免修改原列表的初始元素 - 通过
i % interval快速定位累加位置,确保逻辑适用于任意合法间隔和列表长度
内容的提问来源于stack exchange,提问作者user19384320
相关产品推荐
相关产品推荐

