如何在for循环中根据变量N动态引用st_N命名的列表?
解决动态遍历对应名称列表的问题
你可以通过以下几种方式实现需求,推荐优先使用字典管理的方式:
方法1:使用全局/局部变量字典(不推荐)
如果你的st_*系列列表是全局或局部变量,可以通过globals()或locals()函数获取变量字典,再拼接变量名来获取目标列表:
import numpy as np N = 4 # 假设已定义st_4列表 for tr in globals()[f'st_{N}']: tr.data = np.require(tr.data, dtype=np.float32)
这种方式虽然能实现需求,但直接操作变量字典可读性差,容易引发意外问题,不建议在复杂项目中使用。
方法2:用字典统一管理列表(推荐)
更规范的做法是提前把所有st_*列表存入字典,通过键值对的方式动态获取:
import numpy as np # 初始化字典,将对应编号的列表存入 st_dict = { 1: st_1, 2: st_2, 3: st_3, 4: st_4 } N = 4 # 通过变量N作为键,获取目标列表遍历 for tr in st_dict[N]: tr.data = np.require(tr.data, dtype=np.float32)
这种方式结构清晰,代码易维护,符合Python的编码最佳实践。
方法3:类实例属性场景
如果st_*是类的实例属性,可以使用getattr()函数动态获取:
import numpy as np class MyClass: def __init__(self): self.st_4 = [...] # 初始化实例属性列表 obj = MyClass() N = 4 for tr in getattr(obj, f'st_{N}'): tr.data = np.require(tr.data, dtype=np.float32)
内容的提问来源于stack exchange,提问作者Pahan
相关产品推荐
相关产品推荐

