今回は前回のリストの変更に続き、リストをハンドリングする方法として、リストをコピーする方法を紹介します。
リストのコピー
作成したリストは、単純に別の変数に代入しようとすると失敗します。
例を紹介します。
まずは、以下を実行してみましょう。
o = ["さ", "し", "す", "せ", "そ"] p = o p.append("た") p
oをpに代入して、pに「た」を加えたので、以下のように表示されます。
次に、oを表示してみます。
o
以下のようになります。
!!!なんとpに追加したはずの「た」がoにも追加されてしまうのです。
参照渡し
実は、pにoを代入するとき、参照渡しという方法で値を渡しています。
つまり、pはoを参照するショートカットのようなオブジェクトが生成されているのです。
ちなみに、変数にはそれぞれにユニークなIDが湯よされているのですが、id()というものを用いると、確認ができます。
print(id(p)) print(id(o))
pとoのIDが同じということがわかります。
つまり、pはoを参照していたので、pに追加しようと思った要素は実はoに追加されていたということなのです。
これを値の参照渡しと呼びます。
コピー
では、リストはコピーができないのかということなのですが、ちゃんとできますのでご安心を!!
copy()というもので、それが実現できます。
o = ["さ", "し", "す", "せ", "そ"] p = o.copy() p.append("た") print(p) print(o)
このようにpに「た」を加えても、oに影響がないことが確認できます。
以上今回はここまでです。
■告知
Pythonプログラミングを学ぶ基礎講座を開設しています。
興味がある方は、ぜひこちらから。
無料相談もやっております。