1

私はPython関数を持っていますfunc(A)Aはであり、numpy.array大きくなる可能性があるため、何度も何度もコピーすることを躊躇します。これfunc(A)はAの内容を変更したいです。私はこれがPython初心者の問題であることを知っています。以前はCでプログラムしていましたが、ポインターでプログラムできました。Aの範囲外でも変更が有効になるように、の内容を変更するにはどうすればよいfunc(A)ですか?

4

2 に答える 2

6

tl; drはあなたの場合ですが、基本的にはすでにそうです。メソッドのラベルAに新しい値を割り当てない限り、Aは渡したオブジェクトへの参照になります。つまり、Aを変更すると、他の場所で使用するすべての場所で元のオブジェクトが変更されます。

元:

>>> def foo(A):
...     print A[0]
...     A[0] = 2
...     print A[0]
...
>>> a = [0, 1, 2]
>>> foo(a)
0
2
>>> a
[2, 1, 2]
>>> def bar(A):
...     print A[0]
...     A = [0, 1, 2]
...     A[0] = 2
...     print A[0]
...
>>> a = [0, 1, 2]
>>> bar(a)
0
2
>>> a
[0, 1, 2]
于 2012-05-10T21:00:26.473 に答える
0

Aに渡すパラメーターがグローバルパラメーターである場合は、パラメーターAの値を変更できます。もう1つの方法は、変数を関数から関数に渡すことです。私がPythonで理解していることから、そうしてもオブジェクトはコピーされません。

于 2012-05-10T21:00:18.873 に答える