如何高效自动生成批量变量代码并将变量自动存入列表
高效实现方案
完全不需要手动写数百行重复赋值代码,也没必要维护大量零散的单变量,直接通过循环规则批量生成目标列表即可。
方案1:直接生成目标列表(最推荐)
先明确规则对应关系:
- 年份范围:2013 ~ 2020,共8年,对应select参数里的前缀数字为
年份-2013 - 波段范围:B1 ~ B11,对应波段序号1~11
直接用列表推导式一步生成my_variables,和手动拼接的列表顺序完全一致,可直接传入函数使用,全程不需要定义任何Bx_xxxx格式的零散变量:
start_year = 2013 end_year = 2020 band_count = 11 my_variables = [ images.select(f"{year_idx}_B{band_idx}") for year_idx in range(end_year - start_year + 1) for band_idx in range(1, band_count + 1) ]
方案2:特殊场景需要生成全局变量(不推荐)
如果有特殊需求必须要在全局作用域生成这些零散变量,可以通过globals()批量赋值,同时自动生成目标列表:
start_year = 2013 end_year = 2020 band_count = 11 my_variables = [] for year_idx in range(end_year - start_year + 1): current_year = start_year + year_idx for band_idx in range(1, band_count + 1): var_name = f"B{band_idx}_{current_year}" var_value = images.select(f"{year_idx}_B{band_idx}") # 写入全局变量,支持后续通过B1_2013这类变量名单独调用 globals()[var_name] = var_value # 同时写入目标列表 my_variables.append(var_value)
内容的提问来源于stack exchange,提问作者Borealis
相关产品推荐
相关产品推荐

