2016-11-02 1 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

ありがとう、それは私がそうしたことです遠いしかし、私にとっては、モデルを追跡する方がはるかに簡単であるため、dictがより良い解決策になるかもしれません。どのパラメータが使用されたか。 – Pepe

関連する問題