求助:在for循环中动态使用列表变量名实现append操作
解决循环中动态访问列表的优雅方案
嘿,我完全懂你不想写一堆if/elif来挨个处理couplescores1、couplescores2这种列表的心情——重复代码不仅啰嗦,维护起来也麻烦!咱们用更聪明的方式来搞定这个问题:
推荐方案1:用「列表的列表」统一管理
这是最干净、最易维护的方式,把所有couplescores子列表放进一个大列表里,直接通过循环索引访问:
# 先把所有需要操作的列表放进一个大列表里 couplescores_collection = [couplescores1, couplescores2, couplescores3] # 按你需要的数量添加 # 循环时直接用索引j定位对应的子列表 for j in range(len(couplescores_collection)): # 这里替换成你的score计算逻辑 score = 你的分数值 couplescores_collection[j].append(score)
这样第一次循环时j=0,就会把score加到couplescores1里;第二次j=1加到couplescores2,完美匹配你的需求,完全不需要条件判断!
方案2:用字典映射数字和列表
如果你的循环索引是从1开始的(比如j=1对应couplescores1),用字典来做键值映射也很方便:
# 创建字典,键是你循环里的数字j,值是对应的列表 couplescores_map = { 1: couplescores1, 2: couplescores2, 3: couplescores3 } # 循环范围对应字典的键 for j in range(1, 4): score = 你的分数值 couplescores_map[j].append(score)
不推荐的方案:直接操作全局变量
虽然可以通过globals()函数动态获取变量名,但这种方法可读性差,还容易因为变量名拼写错误或者不存在引发bug,除非万不得已,尽量别用:
for j in range(1, 4): score = 你的分数值 # 拼接变量名并获取全局变量,然后append globals()[f"couplescores{j}"].append(score)
总的来说,优先用「列表的列表」或者字典的方式,既能实现需求,又能让代码更简洁易读,彻底摆脱冗长的条件判断!
内容的提问来源于stack exchange,提问作者Owen Martin
相关产品推荐
相关产品推荐

