如何在Python循环中使用动态变量
例如:var0, var1, var2 = 0, 1, 2
for i in range(3):
print(vari)
如何在Python循环中使用动态变量
你要找的是不是:数组
在Python里,动态创建变量名通常不是个好主意,会让代码难读、难调试。不过,如果你确实需要,这里有几种方法。
方法一:使用字典(推荐) 这是最清晰、最Pythonic的方式。用字典来存储你的动态“变量”。
# 创建一个空字典来存储动态数据
dynamic_vars = {}
# 在循环中创建键值对
for i in range(5):
var_name = f'data_{i}' # 动态生成键名
dynamic_vars[var_name] = i * 10 # 赋值
# 使用数据
print(dynamic_vars['data_2']) # 输出: 20
print(dynamic_vars) # 输出: {'data_0': 0, 'data_1': 10, 'data_2': 20, 'data_3': 30, 'data_4': 40}
方法二:使用列表或元组 如果你的数据是顺序的,直接用列表更简单。
# 使用列表推导式创建列表
data_list = [i * 10 for i in range(5)]
print(data_list[2]) # 输出: 20
方法三:使用globals()或locals()(不推荐,仅作了解)
你可以修改全局或局部命名空间,但这很危险,容易出bug。
for i in range(3):
globals()[f'var_{i}'] = i * 100
print(var_1) # 输出: 100
# 但请尽量避免这样做!
总结一下:
- 用字典:当你需要键值对关联,并且键名是动态生成的时候。
- 用列表:当你的数据是简单的有序序列时。
- 永远不要用
exec()或直接修改globals()来动态创建变量名,那会让你的代码变成“面条代码”,没人能看懂。
一句话建议:用字典来管理动态数据,既安全又清晰。
啥是动态变量?…
你是想这样吗
var = [0, 1, 2 ]
for i in range(3):
print(var[i])
但 python 里一般都直接这样:
list = [0, 1, 2 ]
for var in list:
print(var)
var0, var1, var2 = 0, 1, 2
for i in range(3):
print(eval(‘var’ + str(i)))
for i in range(10):
…locals()[‘var’ + str(i)] = i
print(var0) # 0
哇 没学过 Python 行 2 的意思是给变量取名并分配内存空间并赋值吗 好神奇
牛 B
学 python 基本上都要知道 locals() globals()的吧?
同意,提问者需要的显然只是数组,最多字典,以上你们教的各种黑科技只会让人从此走上歪路
谢谢提供的黑科技。
谢谢,用字典感觉也不错,只是看着有点别扭。


