web-dev-qa-db-ja.com

python)で多数の空のネストされたリストを作成する方法

後で入力できるいくつかの空のリストのネストされたリストである変数が必要です。次のようなもの:

my_variable=[[], [], [], []]

ただし、作成ステップでのみ必要なリストの数が事前にわからないため、それを決定するために変数aが必要です。シンプルなことを考えましたmy_variable=[[]]*a、しかしそれはリストのコピーを作成し、それは私が欲しいものではありません。

私はそれをできた:

my_variable=[]  
for x in range(a):
   my_variable.append([])

しかし、私はよりエレガントな解決策(できればワンライナー)を探しています。ありますか?

7
Andy S. C.

リスト内包表記 を試してください:

lst = [[] for _ in xrange(a)]

下記参照:

>>> a = 3
>>> lst = [[] for _ in xrange(a)]
>>> lst
[[], [], []]
>>> a = 10
>>> lst = [[] for _ in xrange(a)]
>>> lst
[[], [], [], [], [], [], [], [], [], []]
>>> # This is to prove that each of the lists in lst is unique
>>> lst[0].append(1)
>>> lst
[[1], [], [], [], [], [], [], [], [], []]
>>>

ただし、上記はPython2.x。OnPython 3.x。、xrangeが削除されたため、次のようになります。この:

lst = [[] for _ in range(a)]
15
iCodez
>>>[[] for x in range(10)] #To make a list of n different lists, do this:
[[], [], [], [], [], [], [], [], [], []]

編集:-

[[]]*10

これにより、上記と同じ結果が得られますが、リストは個別のインスタンスではなく、同じインスタンスへの参照がn個だけです。

6
Nullify