Python如何通过字符串for循环批量定义多个变量
批量生成类别对应变量的实现方案
推荐方案:使用字典存储结果(可维护性最高)
不要动态生成零散的独立变量,这类变量后续遍历、排查、维护成本极高,用字典做键值对映射是通用的最优实践:
Categories = ['A', 'B'] rgb_dict = {} for Category in Categories: # 初始化当前类别对应的结果列表 rgb_list = [] for i in range(1, numGeoPics + 1): # 拼接文件路径,f-string写法比format更简洁 file_path = f'Outdir/Filters/RGB/addcoord_{Category}{i}.out' g = gs.DataFile(file_path)['value'] rgb_list.append(g) # 按「RGB_类别名」的规则存入字典 rgb_dict[f'RGB_{Category}'] = rgb_list
调用方式和原来的独立变量几乎无差异:
- 原
RGB_A对应的值,直接取rgb_dict['RGB_A'] - 原
RGB_B对应的值,直接取rgb_dict['RGB_B'] - 后续新增类别时,只需要往
Categories列表追加元素即可,不需要修改循环逻辑
不推荐方案:动态生成全局变量(仅作原理参考)
如果一定要生成和手动定义完全一致的独立全局变量,可以通过修改全局命名空间字典实现,但这种方式会污染全局命名空间,变量名冲突、逻辑出错的排查成本极高,非特殊场景不要使用:
Categories = ['A', 'B'] for Category in Categories: var_name = f'RGB_{Category}' # 动态初始化全局变量 globals()[var_name] = [] for i in range(1, numGeoPics + 1): file_path = f'Outdir/Filters/RGB/addcoord_{Category}{i}.out' g = gs.DataFile(file_path)['value'] globals()[var_name].append(g)
运行后可以直接调用RGB_A、RGB_B变量,和手动逐一定义的效果完全一致。
内容的提问来源于stack exchange,提问作者Karim_Mokdad_1995
相关产品推荐
相关产品推荐

