如何改造Python列表值变换函数,使其可适配任意整数长度的列表?
任意长度列表的通用实现
核心逻辑拆解
原硬编码函数本质是对每个索引位重复执行同一套固定操作,完全可以通过循环消除硬编码,适配任意长度的列表:
- 逐位遍历列表,对每个非末尾的索引位置
i:- 把
i位置之后所有元素的折半值,累加回i位置的元素 - 把
i位置之后的所有元素统一做折半更新
- 把
- 末尾索引因为没有后续元素,不需要额外做折半操作,刚好匹配原硬编码的边界处理逻辑。
通用代码实现
def change_list(list1): for i in range(len(list1) - 1): # 累加后续元素的折半值到当前位置 list1[i] += sum(val / 2 for val in list1[i+1:]) # 将后续所有元素折半更新 for j in range(i + 1, len(list1)): list1[j] /= 2 return list1
该实现完全保留原函数原地修改入参的行为,和原有调用方式100%兼容,替换函数体即可直接使用。
结果校验
- 输入长度为5的全1000列表
[1000,1000,1000,1000,1000],输出为[3000, 1250, 500, 187.5, 62.5],和原硬编码函数结果完全一致 - 输入长度为6的全1000列表
[1000]*6,输出为[3500, 1500, 625, 250, 93.75, 31.25],符合规则预期 - 代码中没有硬编码的固定索引值,传入任意长度的等初始值列表都可以按规则执行,不会出现索引越界的问题。
内容的提问来源于stack exchange,提问作者Aura
相关产品推荐
相关产品推荐

