nyanpyou Note

主な目的は調べたり作ったりしたプログラミング備忘録(予定)

関数へリストを渡して中身を書き換えたいときの注意

関数外部で定義したリストを関数に渡し、関数の中からリストの中身を書き換えたかったが、思うような結果にならず1時間半くらい悩むことになった。
解決のために参考にしたページをメモとして残す。

qiita.com

ポイントは、「リストのidが同じならば同じもの、違うならば別のもの」である点。同じidを維持するようにリストを弄らないと、思てたんと違う!?という事態になる。
悩んで試した結果、リストオブジェクトが持っているメソッドを使ってリストの中身を弄ってやれば、同じidを維持できるようだ。リストオブジェクトのメソッドは以下の通り。

docs.python.org

リストaとリストbの中身を同じにしたいからと言って、

#python
def test(a,b):
    a=b

a = [1,2,3]
b = []
test(a,b)
print(a)

でええやろ!という感じに安易にやると、思ったようにならなくて困ることになるので気を付けましょう(自戒)