0

重複の可能性:
Pythonリストの混乱

簡単なPythonスクリプトを作成するときは、次のように新しいリストを定義します。

A=[[],]*10

私がやりたいのは、長さが10で、各要素が空のリストであるリストを初期化することです。

そして、私が次のようなことをするとき:

A[0].append(["abc",])

["abc",]これをに追加したいA[0]のですが、Aのすべての要素に追加されていることがわかります["abc",]

私はこれをおそらく私の初期化(A=[[],]*10)のために知っています。なぜこれが起こったのか知りたいだけです。

4

3 に答える 3

3

あなたの表現A=[[]]*10は以下と同等です:

a = []
A = [a]*10

これは、Aが1つの同じリストへの10個の参照で構成されていることを意味します。

于 2012-09-22T21:09:00.080 に答える
2

同じ空のリストへの10個の参照を含むリストを作成しています。

代わりにリスト内包表記を使用する必要があります。

A = [[] for _ in range(10)]

リスト内包表記では、ループの反復ごとに新しいリストを作成します。Python 2を使用している場合は、xrange代わりに使用する必要がありますrange(ただし、要素が10個しかないため、大きな違いはありません)。

于 2012-09-22T21:11:43.553 に答える
1

空のリストはすべて同じオブジェクトへの参照です。

于 2012-09-22T21:10:01.257 に答える