2013-12-22 33 views
1

我可以在C中做到这一点,但我没有在Python中遇到过。使用循环将值赋给变量列表

说我有几个变量:

variable1 = None 
variable2 = None 
variable3 = None 
variable4 = None 
variable5 = None 

,我有值列表[1,2,3,4]

如何可以分配值给变量带有单环所以我得到以下结果:

variable1 = 1 
variable2 = 2 
variable3 = 3 
variable4 = 4 
variable5 = None 
+2

为什么不使用'list'代替? –

回答

2

虽然你在技术上可以修改局部变量,这样做很气馁。相反,你应该这些值存储在一个字典来代替:

variables = { 
    variable1: None, 
    variable2: None, 
    variable3: None, 
    variable4: None, 
    variable5: None 
} 

values = [1, 2, 3, 4] 

for i, value in enumerate(values): 
    variables['variable' + (i + 1)] = value 

但当然,如果所有这些变量区分是多少,你可以简单地用一个列表,以及:

# This will create a list with 5 None values, i.e. variables[0] .. variables[4] 
variables = [None] * 5 

for i, value in enumerate(values): 
    variables[i] = value 
+0

太棒了!谢谢你的帮助。 – DGDD

1

你应该确实考虑使用一个列表,而不是,但如果你清楚你在做什么,尝试:

var1, var2, var3, var4, var5 = my_list + [None]*(5-len(my_list)) 
0

我不建议这样做,但如果你真的必须,您可以使用globals()获取已定义变量和函数的字典,以访问和修改它们。

var1 = var2 = var3 = var4 = var5 = None 
for i, v in enumerate([1, 2, 3, 4]): 
    globals()["var%d" % (i+1)] = v 
print var1, var2, var3, var4, var5 

但是,真的,你倒是应该使用listdict代替,如在其他答案建议。

+1

'globals()'是的,虽然你说你不应该; '当地人()'不。后者不能保证工作,因为你链接的文档解释。 – DSM

+0

@DSM感谢提示,不知何故,我完全错过了信息框。编辑建议只'globals'。 –

+0

感谢您的帮助! – DGDD