Python中使用globals创建动态变量后如何在循环中批量调用计算
方法1:保留你现有的全局动态变量逻辑
外层新增遍历test_data的循环,通过globals()动态获取对应变量即可,替换你原来写死2的两段循环代码即可:
for num in test_data: # 动态获取当前数值对应的DataFrame current_df = globals()[f"test_df_{num}"] current_list = globals()[f"test_list_{num}"] # 原第一段写死2的循环逻辑 for i in range(len(current_df)): current_list.append((current_df.data1[i], current_df.data2[i])) current_calc = globals()[f"test_calculation_{num}"] # 原第二段写死2的循环逻辑 for i in range(len(current_list)): current_calc += test_dict[current_list[i]] globals()[f"test_calculation_{num}"] = current_calc # 输出结果 print(f"test_calculation_{num} 结果:", current_calc)
注意:你当前示例代码里只写了test_df_2、test_df_5的定义,用到test_data里的7、8时需要补充对应DataFrame的定义。
方法2:更推荐的替代方案(避免滥用全局变量)
直接用字典存储所有对应对象,代码可读性、可维护性更高,不需要操作全局作用域:
# 把所有DataFrame统一存入字典,无需生成全局的test_df_xx变量 df_dict = { 2: pd.DataFrame(test_df_data2), 5: pd.DataFrame(test_df_data5), # 补充7、8对应的df即可 } # 用字典存储列表和计算结果 test_list = {} test_calculation = {} for num in test_data: test_list[num] = [] test_calculation[num] = 0 current_df = df_dict[num] # 填充列表 for i in range(len(current_df)): test_list[num].append((current_df.data1[i], current_df.data2[i])) # 累计计算 for item in test_list[num]: test_calculation[num] += test_dict[item] # 输出结果 print(f"test_calculation_{num} 结果:", test_calculation[num])
内容的提问来源于stack exchange,提问作者Soo
相关产品推荐
相关产品推荐

