2016-06-25 4 views
0
def fun1(input):  
    input.reverse()  
    return input 

これはfun1([1,2,3])リストを逆にではなく、同時に、それを逆にすることは

のために正常に動作しますが、私は上記の文の出力の両方のために、この

input = [p,q,r] 
print fun1(input) 
print input 

のような何かをしたいとき[r,q,p]です私はそれが[p,q,r]のままにしたい。名前としてinputを使用して

enter image description here

+0

逆にしたいですか? *正確に*期待される出力は何ですか? –

+0

['list.reverse'は 'sのアイテムを元に戻します'](https://docs.python.org/3/library/stdtypes.html#mutable-sequence-types)。 –

+0

私は入力を逆にしたい、逆の出力と初期入力を取得したい – dr10

答えて

1

それは悪い考えですので、組み込みinput機能をシャドウします。

そのままinput_を維持するために、あなたの代わりにそれを直接変更するので、そのコピーを変更することができます。

def fun1(input_): 

     input_copy = input_[:] # A copy of input via slicing 
     input_copy.reverse() 
     return input_copy # return the mutated copy of your input 

をまた浅いコピーを作成するために、明示的なcopy機能を使用することができます。

input_copy = input_.copy() 

input_は変更されず、コピーの変更は元に反映されませんinput_

0

反転リストに新しいローカル変数を割り当てて返します。

def fun1(input): 
    output = input[:] 
return output.reverse() 
+0

tq Ami私はそれを得た – dr10

関連する問題