pythonで引数で渡したListを関数内のローカル変数に置き換える方法を知りたいです。
python
1def func(argList): 2 print("==========") 3 print("argList in func(): {}".format(argList)) 4 output = [i * 2 for i in range(10)] 5 argList = output 6 print("argList in func(): {}".format(argList)) 7 print("==========") 8 9 10def func2(argList): 11 print("==========") 12 print("argList in func2(): {}".format(argList)) 13 output = [i * 2 for i in range(10)] 14 for i in range(len(output)): 15 argList[i] = output[i] 16 print("argList in func2(): {}".format(argList)) 17 print("==========") 18 19 20if __name__ == "__main__": 21 mainList = [i for i in range(10)] 22 print("mainList in main(): {}".format(mainList)) 23 func(mainList) 24 print("mainList in main(): {}".format(mainList)) 25 func2(mainList) 26 print("mainList in main(): {}".format(mainList)) 27
output
1mainList in main(): [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2========== 3argList in func(): [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 4argList in func(): [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 5========== 6mainList in main(): [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 7========== 8argList in func2(): [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 9argList in func2(): [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 10========== 11mainList in main(): [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
func()のように代入演算子を使って書き換えようとすると、呼び出し元で元に戻ってしまいます。(copy.copy()を使っても同様)
func2()のように、Listの値を1つずつ書き換えればやりたいことが出来ないこともないのですが、この実装ではもし引数のListと置き換えたいListの長さが違えば実行できません。
なにかよい実装はありませんか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。