0

重複の可能性:
Pythonリストの予期しない機能Pythonで
2次元配列を初期化する方法は?

nsizeのネストされたリストを作成し、基準に従ってアイテムを1つずつ追加したいと思いました。

このために私はそれを次のように書きました(nsize = 4)

a = [[]] * 4  # which creates on display a = [ [] , [] , [] , [] ]

a[1].append(3)今、私は私に出力を与えるこのようなことをします[[3], [3], [3], [3]]

私はここで何が間違っているのですか?2番目のリスト(a [1])だけを値3で更新するべきではありませんか?

4

2 に答える 2

3

あなたがしていることは、同じサブリストへの4つの参照を持つリストを作成します。

代わりに次のようなことをする必要がありますa = [[] for _ in xrange(4)]

于 2012-10-07T23:23:31.593 に答える
0

はい、それはしばしば驚くべきことですが、そのように機能するはずです。これに相当します

b=[]
a=[b]*4

そして、あなたが言うときa[1].append(3)、それはちょうど言うのと同じb.append(3)です。また、a同じリストへの参照が4つ含まれているため、印刷すると4回表示されますa

于 2012-10-07T23:26:55.953 に答える