如何用循环生成带指定可调用名称的变量引用列表?
动态生成可调用的命名列表问题
需求
要生成如下形式的可直接调用的列表,其中A1、A2等变量已预先定义(例如A1=1, A2=2...),要求调用Alist[3]能返回对应变量的数值(如3):
Alist = [A1, A2, A3,..., An] Blist = [B1, B2, B3,..., Bn] Clist = [C1, C2, C3,..., Cn] ...
尝试过的代码及问题
代码1
N = 5 Lists = ["A","B","C","D"] for j in Lists: def jList(N): lst = [] for i in range(n+1): lst.append(j+str(i)) return(lst)
问题:仅能生成包含字符串(如"A1")的列表,无法创建Alist这类可调用的变量名,且无法获取预先定义的变量数值。
代码2
N = 5 Lists = ["A","B","C","D"] def createList(j,n): lst = [] for i in range(n+1): lst.append(j+str(i)) return(lst) for j in Lists: j+"List" = createList(j,N)
问题:j+"List" = ...属于语法错误,赋值语句左侧不能是表达式,无法完成变量创建。
解决方案
方案1:用字典存储(推荐)
用字典统一管理生成的列表,避免污染命名空间:
N = 5 Lists = ["A","B","C","D"] # 预先定义变量 A1, A2, A3, A4, A5 = 1, 2, 3, 4, 5 B1, B2, B3, B4, B5 = 10, 20, 30, 40, 50 list_dict = {} for prefix in Lists: current_list = [] # 遍历1到N,获取对应变量的值 for i in range(1, N+1): var_name = f"{prefix}{i}" current_list.append(globals()[var_name]) # 将列表存入字典,键为"Alist"、"Blist" list_dict[f"{prefix}list"] = current_list # 调用示例 print(list_dict["Alist"][2]) # 输出3(对应A3的值)
方案2:动态创建全局变量(不推荐)
通过globals()直接创建全局变量,适合必须直接调用Alist的场景:
N = 5 Lists = ["A","B","C","D"] # 预先定义变量 A1, A2, A3, A4, A5 = 1, 2, 3, 4, 5 B1, B2, B3, B4, B5 = 10, 20, 30, 40, 50 for prefix in Lists: current_list = [] for i in range(1, N+1): var_name = f"{prefix}{i}" current_list.append(globals()[var_name]) # 动态创建Alist、Blist等变量 globals()[f"{prefix}list"] = current_list # 调用示例 print(Alist[3]) # 输出4(对应A4的值)
内容的提问来源于stack exchange,提问作者LeBron10
相关产品推荐
相关产品推荐

