2012-05-09 16 views
1

リストの理解度を使用してこれらの2つのリストを生成しています。文字列変数からリスト名を使用する方法

lists = ['month_list', 'year_list'] 
for values in lists: 
    print [<list comprehension computation>] 

>>> ['2012', '2011', '2010', '2009', '2008', '2007', '2006', '2005', '2004', '2003'] 
>>> ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] 

この2つの動的生成リストをこのリスト名に追加したいとします。例えば
:最初の場所で文字列を使用する理由

month_list = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] 
year_list = ['2012', '2011', '2010', '2009', '2008', '2007', '2006', '2005', '2004', '2003'] 
+2

動的変数名を使用するのは大変です。それをしないでください。これまであなたはPHPを使用していません。別々の変数を使用するのではなく、それらのリストを辞書に入れてください。 – ThiefMaster

+0

'<リスト内包計算>'はどのように見えますか?最善の答えはそれに依存するからです。 (しかし、ループは含まれていない可能性が高いです。) – Robin

答えて

1
month_list = [] 
year_list = [] 
lists = [month_list, year_list] 
dict = {0 : year_list, 1:month_list} 

for i, values in enumerate(data[:2]): 
    dict[i].append(<data>) 

print 'month_list - ', month_list[0] 
print 'year_list - ', year_list[0] 

>>> month_list - ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] 
>>> year_list - ['2012', '2011', '2010', '2009', '2008', '2007', '2006', '2005', '2004', '2003'] 
+0

なぜ文字列キーですか?なぜ整数キーはありませんか? – Robin

1

?あなたは二つのリストを定義した後

理由だけではなく...

lists = [month_list, year_list] 
for list_items in lists: 
    print repr(list_items) 

をしませんか?

3

名前の代わりに参照を使用するように私に聞こえます。

しかし、リスト内包表記は、関係なく1つのリストのみを作成できるため、問題を再考する必要があります。

2

あなたはMODULの名前空間にグローバル変数を追加し、この方法でそれらに値を接続することができます。

globals()["month_list"] = [<list comprehension computation>] 

Read more about namespaces in Python documents.

それとも、新しい辞書にこれらのリストを格納することができます。

your_dictionary = {} 
your_dictionary["month_list"] = [<list comprehension computation>] 
関連する問題