プログラムでエラーが発生した理由を理解するには、変数のメルトアップが原因で単純なプログラムを書きました。この関数は2 * 2の行列を入力として取り込み、その行を含むリストを返します(無意味で非効率的ですが、私はこの背後にある理論を理解しようとしています)。値リストでリストをコピーして参照なしでコピーする
def alpha(A): #where A will be a 2 * 2 matrix
B = A #the only purpose of B is to store the initial value of A, to retrieve it later
mylist = []
for i in range(2):
for j in range(2):
del A[i][j]
array.append(A)
A = B
return mylist
しかし、ここでは、Bが、私はそれを後で使用するためにBにAの初期値を格納することはできませんよという意味で、動的にの値が割り当てられているようです。何故ですか? Pythonは参照 でリストを渡しているので
'array.append(A)は'本当に 'マイリストであるべき。 (A) 'を付ける?そうでない場合、 'array'はどこに定義されていますか? – CDspace
"array"が追加したい実際の配列、つまりその配列に対応する変数であり、 "array"パッケージではないことを考慮せずに、ドキュメントからarray.append(A)をコピーしました。申し訳ありませんが私はsometihngを逃した? –
[Pythonの参照渡し](http://robertheaton.com/2014/02/09/pythons-pass-by-object-reference-as-explained-by-philip-k-dick/)かなり視覚化のための – dangom