2017-01-25 9 views
0

一連のサブリストを含むORDEREDリストを作成する必要があります。しかし、私は既知の変数を反復する方法がわかりません。Python:動的に既存の変数名を作成して実行する

例を示します。

list_0 = [0, 1, 2] 
list_1 = [3, 4, 5, 6] 
list_2 = [7, 8, 9] 

私は大きなリストlist_allにリストを追加しようとしている:のは、私は以下のサブリストがあるとしましょう

list_all = [ [0, 1, 2], [3, 4, 5, 6], [7, 8, 9] ] 

だから私は、変数名を反復処理しようとしているが、これが可能かどうかわからないのですか?

list_all = [list_{num}.format(num=i) for i in range(3)] 
# SyntaxError 

これはlist_allが知られている変数の文字列が含まれている場合に動作するようですが、私は明らかに変数を必要としない、私はそれらの変数内のデータを必要としています。

list_all = ['list_{num}'.format(num=i) for i in range(3)] 
print list_all 
# ['list_0', 'list_1', 'list_2'] 

私は動的に変数名を作成して実行することができますか?私はリストの数がユースケースごとに変わるので、これを行う必要があります。あなたは本当に、本当にがこれを必要とする場合

+0

何がすべき変数 "foo_#"に名前を付ける代わりに、リスト(または他のデータ構造体)を使用してください。それから、非常に簡単かつ自然にあなたのリストを繰り返し、あなたが望むことをすることができます。 – dsh

+2

変数 'list_0'、' list_1'を作成せず、リストまたは辞書 'list [0]'、 'list [1]' – furas

答えて

1

、あなたはglobals()またはlocals()辞書から変数とその値を得ることができます。

>>> list_0 = [0, 1, 2] 
>>> list_1 = [3, 4, 5, 6] 
>>> list_2 = [7, 8, 9] 
>>> [globals()["list_{}".format(i)] for i in range(3)] 
[[0, 1, 2], [3, 4, 5, 6], [7, 8, 9]] 

しかし、ほぼ確実ではなくlist_0のなどで開始するlist_allの一環として、個々のリストを格納し、list_all[0]としてそれらにアクセスするためのより良いアイデアのようになります。

>>> list_all = [] 
>>> list_all.append([0, 1, 2]) 
>>> list_all.append([3, 4, 5, 6]) 
>>> list_all.append([7, 8, 9]) 
>>> list_all[0] 
[0, 1, 2] 
+0

を作成してください。私はまた 'eval()'がこの場合にも機能することを理解しました –

関連する問題