リストオブジェクトの共有


はじめに(5月4日追記)

コメント欄の @shiracamus さんのご説明が非常に分かりやすく参考になると思います.
この記事の本文よりも,是非コメント欄をお読みください.

自己紹介

データサイエンスに関する研究(理論と応用)をしている学生です.
これまでR言語しか使ってきませんでしたが,最近Pythonの学習を始めました.
RとPythonで全然違うなあと思った点や,使い分ける上で注意すべき点をまとめていきます.
今後,ご指摘やアドバイスなど,よろしくお願いいたします.

たとえば

test.R
lis1 = list(1,2)
lis2 = lis1
lis1[[1]] = 100
print(lis2)

# 出力
[[1]]
[1] 1

[[2]]
[1] 2

Pythonだと,全然違う結果になる.
参照渡しが行われている.

test.py

lis1 = [1,2]
lis2 = lis1
lis1[0] = 100
print(lis2)

# 出力
[100, 2]

Rっぽく扱う(値渡し)をするためには,copyモジュールとやらを使えばよさそう.