0

たとえば、Pythonで動的な名前のリストを作成するにはどうすればよいですか

for i in range(len(myself)):
   list(i) = []

list(i) の代わりに何を使用すればよいですか? それは私が以下のような名前が欲しいことを意味します:

list1
list2
list3
...
4

2 に答える 2

7

動的変数名の代わりにリストまたは辞書を使用することをお勧めします。以下のすべてのバージョンではlists[0]lists[1]などが[]になります。これは、必要なものに十分近いと思われ、長期的にはより読みやすく、保守しやすくなります。(注:変数名のlists代わりに使用しているのは、後者が組み込み関数を上書きするためです。これはおそらく望ましくありません)。listlist

1)リストのリストであるバージョンlists(番号はリストの順序です):

lists = [[] for i in range(len(myself))]

2) 同じですが、リスト内包表記の代わりに for ループを使用します。

lists = []
for i in range(len(myself)):
   lists.append([])

3) キーとして数字を持つリストの辞書であるバージョンlists(後で値の一部を削除したい場合などには、もう少し柔軟です):

lists = {}
for i in range(len(myself)):
   lists[i] = []

動的変数名について、つまり変数のlist1代わりにlists[1]... 真剣に、おそらくそうすべきではありません。不必要に複雑で、保守が困難です。考えてみてください。来月、スクリプトを変更する必要があり、変数list1が定義されている場所を突き止めようとしますが、プレーン テキスト検索ではそれを行うことができません。痛いです。
しかし、何らかの理由で本当に必要な場合は、それを使用しない理由がいくつかありますexec-または変更することで可能です-ドキュメントによると悪い考えです。また、これらのことが悪い考えである理由と、それらについて話すことさえどれほど混乱を招くかについての詳細な議論については、コメントを参照してください。locals()

于 2012-06-09T19:22:42.300 に答える
5

動的変数名が良いアイデアになることはめったにありません。ほとんどの場合、辞書を使用することをお勧めします。

myLists = {"list{}".format(i):[] for i in range(len_i)}

変数名として使用しないでくださいlist。既存のキーワードが隠されます。

于 2012-06-09T19:11:12.177 に答える