参照型変数

配列は今まで出てきた変数(値型)とは特性が異なり、参照型の変数です。

# 値型変数
a = 12
b = a
b = 5
print(a)
print(b)
# 12、5と表示される

値型変数は上記のようにそれぞれの変数が固有で値を保持します。

# 参照型変数
a = [0, 1, 2]
b = a
b[0] = 5
print(a)
print(b)
# どちらも[5, 1, 2]と出力されます。

一方、参照型変数は仕組みが異なり、aもbもb = aの時点で同じ対象(オブジェクト)を参照しています。
そのため、再代入した時の結果が値型と異なってきます。

copyメソッド

参照型の特性に邪魔されずに扱いたい場合はcopy()メソッドを使うことができます。

# copy()を使う
a = [0, 1, 2]
b = a.copy()
b[0] = 5
print(a)
print(b)
# 値型変数のように別々のデータを保持

多次元配列

配列の要素を入れ子にして表のようなデータ構造を作ることができます。

multi_list = [[1, 2], [3, 4], [5, 6]]
print(multi_list[0])
print(multi_list[2][1])

多次元配列ということなので上記の二次元だけでなく、三次元以上も扱うことができます。
しかしながら取扱いが大変になるので、あまり利用されることはありません。