rubyでやってたアレ、pythonでどうやる? 〜 リストの複製
rubyで
ary = [1,2,3] # => [1, 2, 3] ary.object_id # => 2168514860 # 代入しても ary2 = ary # => [1, 2, 3] # 参照先は同じ ary2.object_id # => 2168514860 # dupだと ary3 = ary.dup # => [1, 2, 3] # 新しいリストオブジェクトになる ary3.object_id # => 2168523280 # Arrayのコンストラクタ ary4 = Array.new(ary) # => [1, 2, 3] # 新しいリストオブジェクトになる ary4.object_id # => 2164376320
ary = [1,2,3] # => [1, 2, 3] id(ary) # => 1944952 # 代入しても ary2 = ary ary2 # => [1, 2, 3] # 参照先は同じ id(ary2) # => 1944952 # スライシングを使って複製 ary3 = ary[:] ary3 # => [1, 2, 3] # 新しいリストオブジェクトになる id(ary3) # => 1960816 # list関数で複製 ary4 = list(ary) ary4 # => [1, 2, 3] # 新しいリストオブジェクトになる id(ary4) # => 1971464
pythonのスライシングを使ったリストの複製は、慣れていない人には暗号みたいでわかりづらいので、
list関数を呼ぶほうが良いですね