如何通过字符串格式化调用变量?Python循环赋值问题求助
解决Python中通过字符串格式调用变量的问题
嘿,这个问题我之前也踩过坑!直接把字符串当成变量名用肯定行不通,Python可不会自动帮你把字符串解析成对应的变量。这里给你两个实用的解决方案,按需选择:
方法一:用字典存储变量(强烈推荐)
单独定义x0到x100这么多零散变量不仅难维护,循环调用也麻烦。不如把这些值统一存到字典里,用索引作为键,这样循环起来超方便:
# 先把所有x变量的值存入字典,键对应索引i x_values = { 0: 3.14, 1: 2.72, 2: 1.41, # ... 中间省略其他变量的赋值 100: 7.77 } # 假设lst是你的目标列表 lst = [这里放你的列表初始元素] # 循环遍历索引,直接从字典取值计算 for i in range(101): # 注意x0到x100共101个元素,所以范围是0-100 lst[i] -= x_values[i]
这个方法的好处是代码清晰,后续要修改某个值或者新增变量,直接操作字典就行,完全符合Python的最佳实践。
方法二:用globals()/locals()函数(应急用,不推荐)
如果你实在不想改现有变量的定义方式,可以通过globals()或locals()函数获取当前作用域的变量字典,然后通过字符串拼接的键名来取值:
# 假设lst是你的目标列表 lst = [这里放你的列表初始元素] for i in range(101): # globals()返回全局变量的字典,用'x{}'.format(i)作为键获取对应变量的值 lst[i] -= globals()['x{}'.format(i)]
⚠️ 注意:这种方法尽量少用!一来代码可读性差,别人看的时候会困惑;二来如果变量名拼写错误或者变量不存在,会直接报错,维护起来很头疼。
内容的提问来源于stack exchange,提问作者user11914512
相关产品推荐
相关产品推荐

