0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonのリストのコピーを行う際に注意すること

Last updated at Posted at 2020-05-20

#はじめに
Pythonでリストのコピーを行う際に注意することをメモします。詳しい内容は「値渡し・参照渡し」などで検索してみてください。 
#注意すること
言葉で説明するよりも先に、以下のコードをご覧ください。

X = 2
Y = X
Y = 5
print('Y = ', Y)
print('X = ', X)

これを実行すると、もちろん

Y =  5
X =  2

という結果が得られます。
次に、以下のコードを実行してみてくだいさい。

i = [1, 2, 3, 4, 5]
j = i
j[0] = 100
print('j = ', j)
print('i = ', i)

ここでは、iというリストを決め、jにiを代入し、jのインデックス番号0の値を100にし、iとjをそれぞれ出力するものです。その結果は、

j =  [100, 2, 3, 4, 5]
i =  [100, 2, 3, 4, 5]

となり、 iの方も変更がされてしまいました。
この原因は、次のコードで確かめることができます。

print(id(X))
print(id(Y))
print(id(i))
print(id(j))
4436251808
4436251904
4304286176
4304286176

となり、値を代入したXとYはそれぞれ違うidを持つのに対し、リストを代入したiとjは同じidを持つことがわかりました。そのため、リストではjで行った変更はiにも反映されることになります。
そのため、リストのコピーを行う際は、

j = i.copy()

#最後に
リストをコピーすることは少ないと聞いたので、あまり使用頻度は高くないと思いますが、バグに繋がらないよう、注意してください。

0
1
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?