メインリストの最初のリスト要素ツリーに[1]を追加したいだけですが、[1]は各リスト要素に追加されます。私が欲しいもの多次元リストと要素を追加する[]
tree = [[]] * 5
tree[0].append([1])
print tree
>>>[[[1], [1], [1], [1], [1]]]
:
>>>[[[1]],[],[],[],[]]
メインリストの最初のリスト要素ツリーに[1]を追加したいだけですが、[1]は各リスト要素に追加されます。私が欲しいもの多次元リストと要素を追加する[]
tree = [[]] * 5
tree[0].append([1])
print tree
>>>[[[1], [1], [1], [1], [1]]]
:
>>>[[[1]],[],[],[],[]]
私の問題は、*を乗算するの参照を作成することでした同じ要素。私が使用する必要があります。
tree = [[] for i in xrange(5)]
リストを作成する方法(tree = [[]] * 5
)が問題となっています。
>>> tree = [[]] * 5
>>> id(tree[0])
139859652123032
>>> id(tree[1])
139859652123032
は、溶液は次のようになります:リスト内のすべての5つのリストは方法id()
を使用しているときあなたが見ることができ、同一のオブジェクトである
>>> tree = [[], [], [], [], []]
>>> tree[0].append([1])
>>> tree
[[[1]], [], [], [], []]
は最後に、参照の最初のリストに
tree[0].append([1])
あなたは本当に副作用のためのリストのcompを使用すべきではありません、なぜあなたはtree = '[xrange(4)のi]' –
個人的な好みでしょうか? *私の答えに追加されました。 –
を '[1]' を追加
各ブランチを反復して追加する文の使用[いくつかをここにリンクされている質問](http://stackoverflow.com/questions/19249201/how-to-create-a-number-of-empty-nested-lists-in-python#comment28494052_19249201)とそのページの質問。 –