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

如何在Python的while循环中为不同变量依次存储循环数据?

解决while循环中动态存储到不同变量的问题

直接定义var1、var2、var3这类独立变量的方式扩展性很差,当category长度变化时需要手动新增变量,更灵活的方案是用列表的列表来统一管理存储容器,具体修改如下:

推荐方案:使用列表的列表

category = []  # 内容由用户输入决定
# 初始化与category长度匹配的存储列表集合
vars_list = [[] for _ in category]
max_count = len(category)
i = 0  # 原代码中i初始化为列表是错误的,需改为整数0

while i < max_count:
    for ms_division in market_share_division:
        ms_division_df = df3[df3['Geography'] == ms_division]
        ms_product_df = ms_division_df[ms_division_df['Product'] == category[i]]
        ms_df_4 = ms_product_df[ms_product_df['Time Period'].str.contains('L 4', na=False, case=False)]
        ms_df_4 = ms_df_4.head(1)
        if len(ms_df_4) > 0:
            ms_df_row_1 = ms_df_4.iloc[0]
            # 向对应索引的列表中添加数据
            vars_list[i].append(ms_df_row_1['Dollar Sales'])
    i += 1  # 必须添加自增,否则会陷入死循环

# 访问方式:vars_list[0]对应原var1,vars_list[1]对应原var2,以此类推

注意事项

  • 原代码中i = []是错误的,需初始化为整数0;
  • while循环内必须加上i += 1,否则会无限循环;
  • 列表的列表方案无需手动新增变量,无论category长度多少都能适配。

可选方案:动态访问已定义的独立变量(不推荐)

如果一定要使用var1、var2这类独立变量,可以通过locals()动态获取变量,但这种方式扩展性差,当category长度超过已定义的变量数时会报错:

category = []
var1 = []
var2 = []
var3 = []

max_count = len(category)
i = 0

while i < max_count:
    # 根据循环次数拼接变量名
    target_var = locals()[f"var{i+1}"]
    for ms_division in market_share_division:
        ms_division_df = df3[df3['Geography'] == ms_division]
        ms_product_df = ms_division_df[ms_division_df['Product'] == category[i]]
        ms_df_4 = ms_product_df[ms_product_df['Time Period'].str.contains('L 4', na=False, case=False)]
        ms_df_4 = ms_df_4.head(1)
        if len(ms_df_4) > 0:
            ms_df_row_1 = ms_df_4.iloc[0]
            target_var.append(ms_df_row_1['Dollar Sales'])
    i += 1

内容的提问来源于stack exchange,提问作者Rodel Silvano

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:22:46