2017-03-13 13 views
3

my_list=["a","b","c"]というリストがあるとします。私は何をしたい、私は自分の名前に応じてそれらにいくつかの要素を追加することができるように別のリストの要素の名前を持つ空のリストを作成する

a=[] b=[] c=[]

として空のリストを作成することです。

+2

なぜあなたはこれをしたいですか?リストのリストはおそらくここでうまくいくでしょう。 – ForceBru

+1

キーは 'a'、' b'、 'c'で、値は空リストです。 – Akavall

+0

名前に基づいてリストに要素を追加する場合は、名前としてキーを持つディクショナリを使用し、値としてリストを使用できます。 – chatton

答えて

1

あなたが行くが、それはそれはあなたが入力したかのようにコマンドを実行する機能execを使用していますが、これはに非常に安全ではない点に注意してください動的変数名

for i in my_list: 
    exec(i+'=[]') 

としてiを使用しますdo

12

変数をプログラムで作成することは非常に悪い考えです。キーとしてこれらの名前の代わりに辞書を作成します。

my_lists = {key:[] for key in my_list} 

その後、あなたは、このようにそれらに追加することができます

my_lists['a'].append(some_data) 

あなたが必要な場合、これはまた、あなた簡単にそれらを介してループすることができるという利点を提供しますに。ここで

+0

私はすでにこれを否定しましたが、新しいPythonプログラマーがこの記事を見つけ、「なぜプログラム的に変数を悪い考えにしているのですか?なぜあなたはこれを言ったのか少し解説できますか? –

+3

多くの理由から、それは悪い考えです。 1)ユーザー入力から変数を作成する場合、ユーザーは変数の1つを簡単に上書きしたり、キーワードを使用しようとする可能性があります。2)変数を追跡するIDEのツールを無効にし、デバッグを悪夢にします。グループ;これはループを簡単にし、大部分のグループにはある時点でループが必要です4)これらの変数を読み込むには別の面倒な 'exec'呼び出しが必要です。 5)作成された変数の数がわからない場合は、ローカル名前空間を検査する別のハックなアプローチが必要です。 6)私が確信している他の理由... – Novel

+0

彼はあなたが編集することを意味すると思う:) – nir0s

関連する問題