1

私はいくつかの問題に取り組んでいて、これに出くわしました。

Python コード

row=[]
col=[]
init=[-1,-1]

initこれをrowandに追加しますcol

row.append(init)
row.append(init)

col.append(init)
col.append(init)

したがってrow = [[-1,-1],[-1,-1]]col = [[-1,-1],[-1,-1]]

今、私がinit[0] = 9私のrowとになるcolとき row = [[9,-1],[9,-1]]col = [[9,-1],[9,-1]]

4

2 に答える 2

6

これは、オブジェクトへの同じ参照を何度も格納するために発生しますinit。したがって、オブジェクトを変更すると、誰もがそれを見ることができます。

append代わりに、リストのコピーを試すことができます。たとえば、1つの方法は次のとおりです。

row.append(list(init))

リストを複製する方法は複数あります。

于 2013-02-16T18:08:22.487 に答える
1

これは理由を説明するのに役立つかもしれません

http://www.jeffknupp.com/blog/2012/11/13/is-python-callbyvalue-or-callbyreference-neither/

于 2013-02-16T18:16:17.290 に答える