2012-08-24 66 views
-2

我通過一個可能有多達6個條目的列表。我需要每個條目到一個不同的變種分配不出去的範圍如果列表短於6在不超出範圍的情況下循環遍歷所有列表[x]的最有效方法?

所以我需要:

var_1 = list[0] 
var_2 = list[1] 
var_3 = list[2] 
var_4 = list[3] 
var_5 = list[4] 
var_6 = list[5] 

了var的能來預分配的無或(優選地)做

var 3 = list[2] or None 
+1

爲什麼不使用字典? –

+1

並且不要使用像'list'這樣的Python類型來命名變量 –

+1

沒有字典,因爲我需要保留條目的順序。 – chrickso

回答

2

改用dict。

lst = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'] 
dct = {'var_%s'%(i+1) : val for i, val in enumerate(lst)} 

dct['var_1'] #accessing fist variable 
>>> 'a' 
dct['var_11'] 
>>> 'k' 
dct['var_12'] 
>>> KeyError: 'var_12' 

注意:如果你真的,真的堅持在具有這些變量,你可以做locals().update(dct)。但我不推薦它。

+1

爲什麼downvote?這類問題通常使用字典來解決。 – Lanaru

+0

很好用! muchas gracias – chrickso

+0

修改本地()**不起作用**(除非你在全局命名空間locals()== globals()) –

0

這是一個糟糕的主意,用list作爲變量名,所以我把它改成lst

var_1, var_2, var_3, var_4, var_5, var_6 = lst + [None] * (len(lst) - 6) 
相關問題