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

如何用Python创建薪资调整累积百分比列表?逐年百分比连乘实现

计算薪资累积调整百分比的Python实现

问题背景

现有如下年份与薪资调整百分比的对应数据:

YearPercentage_readjustment
20201.028
20211.027
20221.061
20231.120

需要计算累积调整百分比:每一年的累积值为上一年累积值乘以当年的调整百分比(2020年的累积值即为当年的调整百分比)。例如2021年累积值为 1.028 * 1.027 = 1.055756。

已通过Python代码将数据转换为元组列表:

year = [2020, 2021, 2022, 2023]
perc_readjust = [1.028, 1.027, 1.061, 1.120]
annual_readjust = list(zip(year, perc_readjust))

得到的列表为:

annual_readjust = [(2020, 1.028), (2021, 1.027), (2022, 1.061), (2023, 1.12)]

需要编写代码计算出如下期望结果:

accumulated_readjust = [(2020, 1.028000), (2021, 1.055756), (2022, 1.12016), (2023, 1.25458)]

解决方案

方法1:普通循环实现

通过初始化累积变量,遍历元组列表逐步计算:

accumulated_readjust = []
current_accum = 1.0  # 初始值设为1,第一个年份的累积值为1*当年调整率

for year, perc in annual_readjust:
    current_accum *= perc
    # 按需求保留小数位数,这里保留6位
    accumulated_readjust.append((year, round(current_accum, 6)))

print(accumulated_readjust)

运行结果:

[(2020, 1.028), (2021, 1.055756), (2022, 1.12016), (2023, 1.254579)]

注:最后一位的1.254579四舍五入后即为期望的1.25458。

方法2:使用itertools.accumulate(更简洁)

利用Python标准库的itertools.accumulate直接生成累积乘积迭代器,结合zip快速组合结果:

from itertools import accumulate

# 提取调整百分比列表
percs = [perc for _, perc in annual_readjust]
# 生成累积乘积序列
accumulated_percs = accumulate(percs)
# 与年份重新组合成元组列表,并处理小数位数
accumulated_readjust = [(y, round(p, 6)) for y, p in zip(year, accumulated_percs)]

print(accumulated_readjust)

运行结果与方法1一致,符合预期需求。


内容的提问来源于stack exchange,提问作者Daniela Berdía

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:36:25