Python勉強メモ(8)リストの注意

Python

リストの変数使用時の注意点

イミュータル(変更可能)のオブジェクト使用時は注意が必要です。

x=[1,2,3]                  
y=x                     
z=x.copy()                 
y.sort(reverse=True)
print(x,y,z,sep=”\n”)

→ [3, 2, 1] 
#xの値が変わってしまう
  [3, 2, 1] #yの値は逆順で変更
  [1, 2, 3] #zはcopyメソッドで別に作った物

コルトン君
コルトン君

あれれ、4行目でyの変数を逆順にしてるだけなのに
結果は元のxの変数も変わってるジャない!

そうなんだリストみたいなミュータブルなオブジェクトを複数の変数に代入し、内容を変えると全部書き換わってしまうんだ。しかしzの変数をみて!元のままだよね。つまりcopy関数を使うと、オリジナルとは別にもう一つ別のオブジェクトを作るから書き換わらないんだ。
つまり、

x=[1,2,3]                  
y=x.copy()                  
y+=[4,5]                       
del y[0:2]                                                  
print(x,y,sep=”\n”)                                      

→ [1, 2, 3] #元の要素を変えずに             
  [3, 4, 5] #yを使い加工でる                

<strong>コルトン君</strong>
コルトン君

加工を失敗しても、元データは変化していないからいから
色んな事が出来ちゃうジャない! グフフ…

コメント

PAGE TOP