Help us understand the problem. What is going on with this article?

pythonで配列のコピーを渡す方法

More than 1 year has passed since last update.

備忘録です.

追記

コメントをいただきました.
深い構造の配列でこのタイプの渡し方をすると下層にある値は変化してしまうため,copy.deepcopy()という関数を使うべきだというコメントをいただきました.


関数に配列を渡すときに参照渡しになっていると困るときがあったので.
配列のあとに[:]をつけると値渡しになります.

def hoge(arr):
    arr[0] += 1

arr_ref = [0, 1]
arr_val = [0, 1]

hoge(arr_ref)
hoge(arr_val[:])

print(arr_ref)
print(arr_val)

出力結果

[1, 1]
[0, 1]

確かに2つ目の配列が値渡しになっています.

nabenabe0928
東京大学工学部/産総研社会知能研究チームRA -> Albert-Ludwigs-Universität Freiburg Master of Computer Science
https://nabenabe0928.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away