0

重複の可能性:
リストの Python リストの予期しない機能
Python リストの混乱

次のコードを検討してください。

a = [[]] * 3
a[1].append("foo")

の値は次のaようになると思います。

[[], ["foo"], []]

代わりに、 のすべての要素aが更新されます。

[["foo"], ["foo"], ["foo"]]

定義された要素 ( a[1])だけでなく、リストの各要素が更新された理由を説明してください。私の論理に根本的に間違っているものはありますか?

それだけの価値があるために、私はPython2.7を実行しています

4

2 に答える 2

1

Python のリストはオブジェクトです。つまり、リストを別の変数に代入すると、どちらかを変更すると実際のリストが変更されます。たとえば、

a = []
b = a
b.append("hi")
print a
// a is now ["hi"]

宿題をするとき

a = [[]] * 3

言ってるのと同じだ

inner_list = []
outer_list = [inner_list, inner_list, inner_list]

つまり、すべての内部リストは同じオブジェクトです。あなたが思うように異なるオブジェクトではありません。

必要な効果を得るには、次のことを行う必要があります。

outer_list = []
for i in range(0, 3):
    outer_list.append([])

3 つの内部リスト オブジェクトを作成し、外部オブジェクトに配置します。

于 2012-04-21T14:31:25.873 に答える
0

何が起こっているかは、python が作成していることであることがわかると思います。

outer_list = []
inner_list = []
outer_list = [inner_list,inner_list,inner_list]

または、より明確に説明すると outer_list、内部リストは 1 回作成されてから にinner_listコピーさ* 3れます。これは、実際にouter_listは 内の 3 つのリストすべてが3 回コピーされた同じへの参照であることを意味します。outer_listinner_list

于 2012-04-21T14:31:28.773 に答える