ディープコピー対浅いlist.copyのpythonは、たぶん私は浅いコピーの定義を理解していない...しかし、私は非常に混乱してい
「s」がある場合はリスト(しかし、同じ質問が辞書にそれぞれ適用されます)。
"s.copy()|(Sのと同じ[:])Sの簡易コピーを作成します"
私はs[:]
が深いコピーだと思った場合を除き。たとえば、リストをコピーする方法については、this stack overflow answerを参照してください(元のバージョンを指すだけではありません)。 [:]
l1 = [1,2,3,4]
l2 = l1[:]
l3 = l1.copy()
l2.append(5)
l3[0] = 99
print(l1)
print(l2)
print(l3)
>> [1,2,3,4]
>> [1,2,3,4,5]
>> [99,2,3,4]
l1
、l2
、およびl3
はすべて別々オブジェクトであるように思われるとlist1.copy()を使用することだけでなく、別名同じ動作をディープコピーを行うようです。私は何が欠けていますか?
...もしl1を数字のリストのリストに変更しても、同じことが起こります - l1.copy()は別のオブジェクトを作成するようです – RSHAP
いいえ、どちらも浅いコピーです。その質問の区別は単なる割り当て(全くコピーしない)とコピー(浅いもの)の間にある –
@ juanpa.arrivillaga、ああ、これは答えているよ。 – RSHAP