My days of...

生活のことなど

PythonのListの値を渡す方法


PythonのListで初歩的なことですが・・・

>>> a = [1,2,3]

>>> b = a

>>> a[1] = 5

>>> b

[1, 5, 3]

 Pythonでは参照渡し(メモリのid参照だっけ?)になるので同じものに。

>>> a = [1,2,3]

>>> c = a[:]

>>> a[2] = 8

>>> c

[1, 2, 3] 

>>> b = a

>>> b

[1, 2, 8]

>>> b[1] = 5

>>> a

[1, 5, 8]

>>> b

[1, 5, 8]

>>> c

[1, 2, 3]

>>> c[1] = 0

>>> c

[1, 0, 3]

>>> a

[1, 5, 8]

>>> b

[1, 5, 8]

なんだか間違えそうになるのですが、Listの値をコピーするのは[:]を使えば大丈夫っぽいのかな。b = a だとメモリ先をコピーするから同じもの。c = a[:] だと値をコピー、と。単純な初歩的なことだから覚えておこう。PHPだとそのまま値コピーだから・・・。 

値渡しと参照渡しの違いを理解する

情報処理教科書 プロジェクトマネージャ 2019年版

情報処理教科書 プロジェクトマネージャ 2019年版