2

JavaにはArrays.fill(A,1). 既存の List のA場合、リストに を入力するためのショートカットはあり1ますか? 配列を取り、何らかの方法で配列を変更する関数を作成しています。配列はポインターであるため、関数は配列を返しません。私の関数が戻った後、呼び出し元は変更を確認します。関数の最初のステップは、配列に1s. やっている

def my_work(A):
   A =[1]*len(A) 
   # more work on A

Aいつ行っても変わらないようですmy_work

だから私の唯一の選択肢です

for i in range(len(A)):
  A[i]=1

またはショートカットはありますか?私のものは回避策のように見えます。

4

2 に答える 2

4

A本当にその場で変更したい場合は、A[:]構文が機能するはずです。

>>> A = [1,2,3]
>>> def my_work(A):
...     A[:] = [1]*len(A) 
...     
>>> A
[1, 2, 3]
>>> my_work(A)
>>> A
[1, 1, 1]

そして、これがチュートリアルの関連セクションです(「スライスへの割り当て」)。

于 2013-01-27T21:57:16.610 に答える
0

あなたが私たちの の を返さないので、 A は変わりませんmy_work。my_work が完了すると、そこにある A は参照されません。

def my_work(A):
    A =[1]*len(A) 
    return A  #This line is needed

A = my_work(A)

これを行う別の方法は、次のようなものです。

def reset_list(L, x):
     return [x for i in xrange(len(L))]

A = reset_list(A,1)
于 2013-01-27T20:30:23.937 に答える