python 初心者あるある リストの複製

リストを1つ作り、もう一つ別の変数を用意して、そのにいれて、元のリストの要素を変えると

変数のリストの要素も変わってしまう。このような経験ありませんか?

>>> test1=[1,2,3,5,7,11,13]  
>>> test2=test1   #これはオブジェクトの参照先をコピーしている
>>> test1[3]=10
>>> print(test1)
[1, 2, 3, 10, 7, 11, 13]
>>> print(test2) 
[1, 2, 3, 10, 7, 11, 13]

これは、値を写しているのではなく、同じオブジェクトを参照しているためです。

回避方法

>>> test1=[1,2,3,5,7,11,13]
>>> test3=test1.copy() #コピーする
>>> test4=test1[:]   #中身をコピー
>>> test5=list(test1) #リストを作る


#確認結果
>>> test1[3]=10
>>> print(test1) 
[1, 2, 3, 10, 7, 11, 13]
>>> print(test3)
[1, 2, 3, 5, 7, 11, 13]
>>> print(test4)
[1, 2, 3, 5, 7, 11, 13]
>>> print(test5)
[1, 2, 3, 5, 7, 11, 13]

以上

コメント

タイトルとURLをコピーしました