リストのコピー

# 別の変数に代入しただけではコピーにならない。
a = [0,1,2,3,4]
b = a
a[1] = 99
print(b)

# リストのコピーには copy() メソッドを使う。
a = [0,1,2,3,4]
b = a.copy()
a[1] = 99
print(b)

# リスト全体を切り出してもよい。
a = [0,1,2,3,4]
b = a[:]
a[1] = 99
print(b)

f:id:ti-nspire:20180107140021p:plain
 

# 理窟はわからないがアスタリスクでリストが unpack できる。
a = [0,1,2,3,4]
b = [*a]
a[1] = 99
print(a)
print(b)

f:id:ti-nspire:20180107185842p:plain

―――――――――――――――――――――――――
Lua の場合:

-- 別の変数に代入しただけではコピーにならない。
a = {0,1,2,3,4}
b = a
a[2] = 99
print(table.concat(b,","))

-- 配列タイプのテーブルはたとえば下のように一度テーブルを unpack してから再度テーブルとして construct すればコピーできる。
-- 参考: http://lua.tips/index.php?Lua%20implements_func_table
a = {0,1,2,3,4}
b = {table.unpack(a)}
a[2] = 99
print(table.concat(b,","))

f:id:ti-nspire:20180107141000p:plain