2016-04-01 6 views
0

メインリストの最初のリスト要素ツリーに[1]を追加したいだけですが、[1]は各リスト要素に追加されます。私が欲しいもの多次元リストと要素を追加する[]

tree = [[]] * 5 
tree[0].append([1]) 
print tree 

>>>[[[1], [1], [1], [1], [1]]] 

>>>[[[1]],[],[],[],[]] 
+1

を '[1]' を追加

tree = [[] for i in xrange(5)] # xrange() and range() will have the same result, but the former is a cheaper iterator 

各ブランチを反復して追加する文の使用[いくつかをここにリンクされている質問](http://stackoverflow.com/questions/19249201/how-to-create-a-number-of-empty-nested-lists-in-python#comment28494052_19249201)とそのページの質問。 –

答えて

0

私の問題は、*を乗算するの参照を作成することでした同じ要素。私が使用する必要があります。

tree = [[] for i in xrange(5)] 
0

リストを作成する方法(tree = [[]] * 5)が問題となっています。

>>> tree = [[]] * 5 
>>> id(tree[0]) 
139859652123032 
>>> id(tree[1]) 
139859652123032 

は、溶液は次のようになります:リスト内のすべての5つのリストは方法id()を使用しているときあなたが見ることができ、同一のオブジェクトである

>>> tree = [[], [], [], [], []] 
>>> tree[0].append([1]) 
>>> tree 
[[[1]], [], [], [], []] 
0

は最後に、参照の最初のリストに

tree[0].append([1]) 
+0

あなたは本当に副作用のためのリストのcompを使用すべきではありません、なぜあなたはtree = '[xrange(4)のi]' –

+0

個人的な好みでしょうか? *私の答えに追加されました。 –

関連する問題