2016-11-02 74 views
1

我想知道是否有一個很好的方式來使用循環來創建和分配變量。我通常會在列表中捕捉對象,但通過變量名訪問每個對象將會很好。 例如,我想自動創建具有不同參數的多個機器學習模型,並將每個模型分配給變量model_1,model_2等。 看起來像這樣的東西:是否有可能在python的for循環中自動創建變量?

for i,parameter in enum(list_of_parameters): 
    model_ + i = model_generator_function(parameter) 

感謝您的幫助!

+2

變量變量名是一個壞主意。一個非常糟糕的主意。把你的數據放在'list'或者'dict'中。 – Matthias

+0

謝謝,這就是我的想法。在這裏找到它[鏈接](http://stackoverflow.com/questions/5036700/how-can-you-dynamically-create-variables-via-a-while-loop) – Pepe

回答

5

的是,你不能在運行時產生的變量名,所以你必須持有的地方他們。我建議使用字典。
嘗試做這樣的事情:

 
models = dict() 

for parameter in list_of_parameters : 
    for i in range(len(list_of_parameters)) : 
     models["model_" + str(i)] = model_generator_function(parameter) 

您可以輕鬆地訪問您的變量(models[model_name])。

0

您可以使用可以動態創建密鑰的dictionary。 嘗試做類似如下:

data = {} 

for i, param in enum(list_of_params): 
     data['model_{}'.format(i)] = model_generator_function(param) 
0

一個字典可能是有用的,創建像「model_0」,「model_1」等關鍵是有點尷尬難對付。 如果你確實只是模型列表,你可以也把它們放在一個列表:

models = list() 
for parameter in list_of_parameters : 
    models.append(model_generator_function(parameter)) 

或更短:

models = [model_generator_function(p) 
      for p in list_of_parameters] 
+0

謝謝,這就是我所做的遠。但對我而言,詞典可能是更好的解決方案,因爲跟蹤模型要容易得多,例如使用了什麼參數。 – Pepe

相關問題