Python(2次元配列の初期化)
■2次元配列の初期化の復習。
今まで迷路サンプルの試しで通った道の記録を取ってきたけど、その情報は下のように [縦の位置、横の位置]として取得している。
1 : [[1, 2], [1, 3], [1, 2], [1, 1], [1, 2], ... , [11, 11]]
これ自体は文字列として保存されているため、情報を整理するために変換する必要がある。似たような構成の文字列で下のようなコードを作った。
str1 = "[[1, 1], [1, 2], [1, 3], [2, 3], [1, 3], [2, 3], [3, 3]]"
str1 = str1.replace(' ', '')
str1 = str1.replace('[[', '')
str1 = str1.replace(']]', '')
str2 = str1.split('],[')
result = [[] for i in range(3)]
for i in range(1, 4, 1):
for j in range(1, 4, 1):
result[i - 1].append(str2.count(str(i) + ',' + str(j)))
for i in range(1, 4, 1):
print(result[i - 1])
結果が次のもので、通った回数を配列として表記することで、視覚的にどこに多くいったか分かるようにした。

このコードを作る際に、2次元配列の宣言で少しはまったのでそのメモ。
空のリストを複数つくる場合、下のような宣言でもエラーが出ることはなく一見問題なさそうだけど、この場合、作成した空のリストは同じものを参照する形になっているよう。
result2 = [[]] * 3
result2[0].append(4)
print(result2[0])
print(result2[1])
result2[0]を更新すると、result2[1]にも同じ値(4)となる。

先の例のように「result = [[] for i in range(3)]」として宣言すると、それぞれ別のリストになるよう。result[0], result[1], result[2] としてそれぞれ別の空のリストができる。いくつかのサイトでこの構文が紹介されていた。