2021年12月08日 更新

コピー元のリストの値が上書きされるのを防ぐ方法

どうも、クラゲジュニアです。

Pythonで、listのデータを = を使ってコピーした場合、一方の要素を変更すると、もう一方の要素も変更されてしまいます。それを防ぐ方法を紹介します。

a = [1, 2, 3]
b = a
a[0] = [5, 5] 

print(a)
print(b)

#出力結果
#[[5, 5], 2, 3]
#[[5, 5], 2, 3]

a[0]を変更すると,b[0]も変更されます。

解決方法

スライスを使ってコピーすると、この問題を防ぐことができます。

a = [1, 2, 3]
b = a[:]
a[0] = [5, 5] 

print(a)
print(b)

#出力結果
# [[5, 5], 2, 3]
# [1, 2, 3]

a[0]を変更しても、b[0]は変更されません。

以上です。