2012-01-06 20 views
1

複数の空リストを作成できるようにリストの名前を増やしたいと思っています。Pythonでリストの名前を増やす方法

たとえば、私は欲しいです。私が取り組んできた

List_1 = [] 
List_2 = [] 
... 
List_x = [] 

:これを行うには

for j in range(5):   #set up loop 
    list_ = list_ + str(j)  # increment the string list so it reads list_1, list_2, ect 
    list_ = list()    # here I want to be able to have multiple empty lists with unique names 
    print list_ 

答えて

14

正しい方法は、リストのリストを持つことです。

list_of_lists = [] 
for j in range(5): 
    list_of_lists.append([]) 
    print list_of_lists[j] 

次に、あなたがそれらにアクセスすることができます:あなたはが本当にあなたはおそらく、あなたが使用することができないはずですが、これをやってみたかった場合

list_of_lists[2] # third empty list 
list_of_lists[0] # first empty list 

exec

for j in range(5): 
    list_name = 'list_' + str(j) 
    exec(list_name + ' = []') 
    exec('print ' + list_name) 

これは、文字列にの名前を作成します、次にexecを使用して、その動的なコードを実行します。

+0

私は同じことを答えたが、一例を台無しに、ひどく:)だから、1を取得します。 – JoeFish

+2

+1ですが、 "これを行う正しい方法"に重点を置いて、リストのリストを持たせることです、そして 'exec' /' locals'を使わないでください。 –

3

私は非常にorgangeoctopus'答えをお勧めしますが、Pythonでこれを行う方法のために:

# BAD HACK 
for i in range(5): 
    locals()['list_%d' % i] = [] 
+0

私が提案した 'exec'よりも優れています。悪い習慣ですが、私はPythonがこのようなことをすることができることを愛しています。それは私にかなりのコーナーをカットさせてくれました! –

+0

locals()は変更しないでください。 http://docs.python.org/library/functions.html#locals –

+0

「locals()」をどのように変更するのが危険なのか気づいていなかった、ありがとう。私は自分の投稿を編集しましたが、 'locals()'が利用可能であることを示すために保存します。これは_reading_のために非常に便利です。 –

関連する問題