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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:09:02