在循环中创建变量并在Python中初始化它们

时间:2014-10-31 06:22:46

标签: python arrays loops

我有10个参数要初始化。遵循约定,它们被命名为a_true,b_true等。它们不是列表或数组而是独立变量。它们需要从长度为1X10的数组中初始化。

我打算做这样的事情,我知道它有它的缺点:

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]

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

这里已经讨论过:

Using a string variable as a variable name

特别是这样的事情应该有效:

for k, v in zip(gvalues, params):
    exec('%s = %s' % (k, v))

答案 2 :(得分:-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']

<强>更新

如果你想用名称&#39; a_true&#39;创建变量。这不是最好的。但是,您可以使用词典。 这是使用keys映射变量以获取values的方法。

在这个例子中。 我们添加&#39; a_true&#39;作为关键,获得价值。

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

print d['a_true']

会给你:1

print d['b_true']

会给你:2

答案 3 :(得分:-1)

您可以尝试使用字典,键是a_true,ect,值是数字。

字典= {}

的dict [ 'a_true'] = 35

或者你可以循环完成整个事情。