能否用f-strings在for循环中创建列表并迭代追加数据?求替代方案
问题解答
原实现是否可行?
不行。你写的代码里直接用f"abc{b}" = []这种方式创建变量是Python语法不允许的,Python不支持通过格式化字符串直接作为变量名进行赋值操作,运行时会直接抛出语法错误。
替代方案
方案1:使用字典存储(推荐)
用字典来映射动态生成的名称和对应的列表,这是Python中处理此类动态命名需求的标准做法,既安全又易维护:
lists_dict = {} for b in range(1, 5): key = f"abc{b}" lists_dict[key] = [] d = f"***{b}" lists_dict[key].append(d) # 访问方式 print(lists_dict["abc1"]) # 输出: ['***1'] print(lists_dict["abc2"]) # 输出: ['***2']
方案2:修改全局/局部命名空间(不推荐)
如果非要创建独立的变量,可以通过globals()或locals()字典来实现,但这种方式会污染命名空间,容易引发变量名冲突,调试和维护难度大,不建议在生产代码中使用:
for b in range(1, 5): var_name = f"abc{b}" globals()[var_name] = [] d = f"***{b}" globals()[var_name].append(d) # 访问方式 print(abc1) # 输出: ['***1'] print(abc2) # 输出: ['***2']
内容的提问来源于stack exchange,提问作者Bhavya Lodaya
相关产品推荐
相关产品推荐

