4

これはかなり単純なコードですが、私がやりたいことをしていません。なにが問題ですか?

In [63]: c = [[]]*10

In [64]: c
Out[64]: [[], [], [], [], [], [], [], [], [], []]

In [65]: c[0]
Out[65]: []

In [66]: c[0] += [1]

In [67]: c
Out[67]: [[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]

期待される出力は[[1], [], [], [], [], [], [], [], [], []]です。

4

1 に答える 1

9

これは古典的な Python の落とし穴です。

c = [[]]*10

10 個のアイテムを含むリストを作成します。まったく同じリスト内の 10 個のアイテムのそれぞれ。したがって、1 つの項目を変更すると、すべての項目が変更されます。

10 個の独立したリストを作成するには、次を使用します。

c = [[] for i in range(10)]
于 2013-04-20T19:38:31.390 に答える