2014-10-31 83 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