2014-10-31 85 views
2

我有10个参数要初始化。按照惯例,它们被命名为a_true,b_true等。它们是而不是列表或数组,但是是独立变量。它们需要从长度为1X10的数组中初始化。在循环中创建变量并在Python中初始化它们

我打算做这样的事,我知道已经得到了它的不足之处:

param=[34,65,...,234] # Contains initialization values 
var=['a','b','c','d','e','f','g','h','i','j'] 
gvalues=[] # Array intended to contain variable names 
k=0 
for i in var: 
    gvalues.append(var[k]+'_true') 
    k+=1 

这将创建像a_true元素的数组,B_TRUE等等。我想带他们作为变量,而不是元素一个数组,最后用param的值初始化它们。 任何可能性? 对不起,如果它看起来微不足道。

Output_intended:

[a_true, b_true, ..., j_true]=[34, 65, ... , 234] 
+0

for循环'vari'应该是'var' !!? – 2014-10-31 06:25:22

+0

哦谢谢,更正 – user3440489 2014-10-31 06:26:59

+1

@ user3440489显示你想要的输出。你还不清楚。更好地使用'i +'_ true''来循环移除'k'。 – 2014-10-31 06:29:11

回答

2

您可以使用locals()globals()动态分配变量。

>>> param = range(10) 
>>> var = 'abcdefghij' 
>>> locals().update({'{}_true'.format(k): v for k, v in zip(var, param)}) 
>>> c_true 
2 
>>> f_true 
5 
+0

谢谢,它的工作原理正是我想要的! – user3440489 2014-10-31 06:39:03

-1

你可以通过字母列表,并连接具有 '_true' 每一封信

import string 

gvalues =[x+'_true' for x in string.ascii_lowercase] 
print gvalues 

输出:

['a_true', 'b_true', 'c_true', 'd_true', 'e_true', 'f_true', 'g_true', 'h_true', 'i_true', 'j_true', 'k_true', 'l_true', 'm_true', 'n_true', 'o_true', 'p_true', 'q_true', 'r_true', 's_true', 't_true', 'u_true', 'v_true', 'w_true', 'x_true', 'y_true', 'z_true'] 

如果您需要连接它与所有字母(大写+小写)。

import string 

gvalues =[x+'_true' for x in string.ascii_letters] 
print gvalues 

这将使你:

['a_true', 'b_true', 'c_true', 'd_true', 'e_true', 'f_true', 'g_true', 'h_true', 'i_true', 'j_true', 'k_true', 'l_true', 'm_true', 'n_true', 'o_true', 'p_true', 'q_true', 'r_true', 's_true', 't_true', 'u_true', 'v_true', 'w_true', 'x_true', 'y_true', 'z_true', 'A_true', 'B_true', 'C_true', 'D_true', 'E_true', 'F_true', 'G_true', 'H_true', 'I_true', 'J_true', 'K_true', 'L_true', 'M_true', 'N_true', 'O_true', 'P_true', 'Q_true', 'R_true', 'S_true', 'T_true', 'U_true', 'V_true', 'W_true', 'X_true', 'Y_true', 'Z_true'] 

UPDATE

如果你想创建变量名为 'a_true'。这不是最好的做法。但是,您可以使用字典。 这是一种使用keys映射变量以获得values的方法。

在这个例子中。 我们添加'a_true'作为关键字,以获得一个值。

d= {'a_true':1, 'b_true':2, 'c_true':3, 'd_true':3} 

print d['a_true'] 

会给你:1

print d['b_true'] 

会给你:2

+0

感谢您的帮助。但是这个变量名称数组是使用for循环和append创建的(虽然这更优雅)。现在如果我想将这些元素用作变量并将它们初始化为a_true = 45,那该怎么办? – user3440489 2014-10-31 06:33:42

+0

检查更新 – user3378649 2014-10-31 06:36:22

+0

为什么你给所有其他答案(-1)。这个解决方案解决了这个问题,但它不是最好的。它应该排名(0),如果你不喜欢它,(-x)为非常不相关的解决方案(这不是这个或其他任何人的情况) – user3378649 2014-11-01 10:30:37

-1

您可以尝试使用字典,用钥匙是a_true等等,数值就是数字。

字典= {}

的dict [ 'a_true'] = 35

或可以做在整个事件中的循环。

+0

你为什么贬低我? – CyanogenCX 2014-10-31 06:50:10