Python嵌套循环计算列表值:Calc_Value函数实现疑问
解决嵌套循环计算函数的问题
我来帮你梳理清楚怎么定义函数完成这个计算,核心思路是先把你的数据结构化,再通过函数按需获取对应类型和年份的值,最后代入公式计算就行~
第一步:结构化存储数据
先把类型a、b的年份-对应值整理成字典,这样后续调用会非常方便:
# 键为数据类型,值是存储年份与对应数值的子字典 data_store = { 'a': {'2D': 1.1275}, 'b': {'0D': 0, '1D': 0.125} }
第二步:定义获取数值的辅助函数
写一个简单的函数,根据类型和年份快速取出对应的值,避免重复写字典索引:
def get_target_value(store, value_type, year): """根据数据类型和年份获取对应数值""" return store[value_type][year]
第三步:实现核心计算逻辑
现在就可以用这个辅助函数来完成你的Calc_Value计算了,甚至可以封装成一个专门的计算函数:
def calculate_calc_value(store): # 获取公式需要的各个数值 val_a_2d = get_target_value(store, 'a', '2D') val_b_0d = get_target_value(store, 'b', '0D') val_b_1d = get_target_value(store, 'b', '1D') # 代入公式计算 result = val_a_2d - (val_b_0d + val_b_1d) / 10000 return result # 调用函数并输出结果 final_result = calculate_calc_value(data_store) print(final_result) # 输出:1.1274875,和预期完全一致
扩展:用嵌套循环处理批量场景
如果之后你需要处理更多类型b的年份(比如新增3D、4D等),可以用嵌套循环来自动求和,不用手动修改公式:
# 遍历类型b的所有年份,自动求和 sum_b_values = 0 for year in data_store['b']: sum_b_values += data_store['b'][year] # 代入公式计算 calc_value = data_store['a']['2D'] - sum_b_values / 10000 print(calc_value) # 同样得到正确结果1.1274875
这种方式更灵活,后续新增年份只需要更新data_store里的内容就行,计算逻辑不用动。
内容的提问来源于stack exchange,提问作者MCM
相关产品推荐
相关产品推荐

