Python如何通过for循环打印带连续编号变量的值?
如何通过for循环打印带连续编号的变量的值?
我想在Python里用for循环打印a0、a1、a2这类带连续编号的变量的数值,写了下面的代码:
a0 = 3 a1 = 4 a2 = 5 for i in range(3): tmps = 'a' + '%d' %i print(tmps)
但这段代码只输出了变量名:
a0 a1 a2
我需要输出对应的数值3、4、5,请问该怎么修改代码?
解决方案
临时方案:通过变量名字符串获取值(快速但不推荐)
你现在的代码只是生成了变量的名字字符串,但没有去读取这个名字对应的实际变量值。Python里可以用globals()或者locals()函数拿到当前作用域的变量字典——字典的键就是变量名,值就是变量的内容。修改后的代码可以写成这样:
a0 = 3 a1 = 4 a2 = 5 for i in range(3): var_name = f'a{i}' # 用f-string拼接更简洁,替代原来的'%d'写法 print(globals()[var_name])
运行这段代码就会输出你想要的:
3 4 5
不过得提醒你,这种直接操作全局变量字典的方式并不推荐,一来代码可读性差,二来如果不小心写错变量名,很容易引发奇怪的错误,维护起来也麻烦。
推荐方案:用列表/字典统一存储变量(更符合Python风格)
其实从一开始就不该用a0、a1、a2这种零散的变量,把相关的值放到列表或者字典里才是更合理的做法,遍历起来也更方便:
列表方式(最适合连续编号的场景)
如果你的变量是严格连续编号的,直接用列表就完美解决:
a_values = [3, 4, 5] for val in a_values: print(val)
输出同样是:
3 4 5
要是你还需要把编号和值对应起来打印,用enumerate就行:
a_values = [3, 4, 5] for idx, val in enumerate(a_values): print(f'a{idx} = {val}')
输出结果:
a0 = 3 a1 = 4 a2 = 5
字典方式(适合非连续编号或自定义命名)
如果你的变量名不是连续数字(比如a1、a3、a5),用字典存储更灵活:
a_dict = {'a0': 3, 'a1': 4, 'a2': 5} # 按变量名排序后遍历,保证顺序正确 for key in sorted(a_dict.keys()): print(a_dict[key])
这样也能得到正确的数值输出。
内容的提问来源于stack exchange,提问作者C. Harry
相关产品推荐
相关产品推荐

