2017-08-03 3 views
2

これはおそらく悪い考えですが、すべての可能なオプションを作成して未使用の結果を無視する以外は、これを行う最良の方法と思われます。私は12の潜在的な値からの値を含むソースファイルを持っています。動的な変数の作成(リストの場合)

私は既にリスト内に必要な文字列をすべて持っていますが、これは意味があれば各文字列をリスト自体の先頭にすることを目指していますか?現在のリストが含まれているたとえば

"は、B、C、D、Eは" ループ内の必要な出力は次のようになり '= []。。B = []' など

+0

'list'の' list'はどうですか? – EsotericVoid

答えて

5

はあなたが意味すると仮定すると、 「スタートリスト」ではなく「」という名前ののリスト(あなたのコードが示唆するように)...はい、これは悪い考えです。おそらく

d = {var_name: [] for var_name in current_list} 

のようなものは、実はこれはPythonが舞台裏で何をするかの一種である、代わりにdictを使用する必要があります。あなたは

a = [] 

を書くとき、次にPythonはdict(基本的に同等のもの)にエントリa: []を追加しています。モジュールスコープの場合はglobals()関数を使用して、その関数内にある場合はlocals()を使用して、その辞書に含まれるものを確認できます。

+0

申し訳ありませんが、私はリストの名前を意味しました。返信ありがとう:) – TrueSlawter

3

私はではありません。は、動的に変数を生成することによって名前空間を汚染することをお勧めします。これは特に大規模なリストを手に入れることができます。あなたは代わりに辞書を使うべきです。

In [941]: d = {x : [] for x in 'abcde'}; d 
Out[941]: {'a': [], 'b': [], 'c': [], 'd': [], 'e': []} 

これが作成して維持するのが簡単であるかを見てください。

+0

返信ありがとうございます、私が使用しているリストは、この段階になる前に "ソースリスト"と言うように最大12の値を含むことになります。 – TrueSlawter

+0

@TrueSlawterまだ、なぜディクテーションを排除するのですか?確かに、あなたは 'globals()'や 'eval'を使うことができますが、これはお勧めできません。 –

関連する問題