多次元配列を多重ループを回してアクセスするときの注意事項(戒め)
説明
多次元配列を多重ループを回してアクセスするとき多次元配列の定義とループを回す順番を合わせないと遅くなる件。
何度もやらかしてそのたびに反省しているのだが、ついついうっかりしてしまうので戒めのために記事にしておく
array = [[[0 for _ in range(A)] for _ in range(B)] for _ in range(C)]
# ダメな例
for i in range(A):
for j in range(B):
for k in range(C):
array[k][j][i] = hogehoge
# 正しい例
for k in range(C):
for j in range(B):
for i in range(A):
array[k][j][i] = hogehoge
回す回数が明らかに少ない次元を外側ループで回すようにすることも大事
ディスカッション
コメント一覧
まだ、コメントがありません