🍵

競プロ私的スニペット Python3 二次元配列編

2023/11/26に公開

任意のサイズの二次元配列を作る

num_rows = 3
num_columns = 4

DEFAULT_VALUE = None
lst = [[DEFAULT_VALUE for _ in range(num_columns)] for _ in range(num_rows)]
# => [[None, None, None, None], [None, None, None, None], [None, None, None, None]]

ある要素を基準に周囲の要素(1つ隣の上下左右斜め)のインデックスを取得する

ある要素を基準に隣接する要素(1つ隣の上下左右)のインデックスを取得する

ある要素を基準に斜めに要素のインデックスを取得していく

転置

from pprint import pprint

grid = [
    [2, 2, 2, 7, 8],
    [1, 1, 4, 4, 4],
    [0, 8, 13, 13, 15],
    [4, 5, 5, 5, 11],
    [0, 9, 11, 18, 18]
]

pprint(list(zip(*grid)))
"""
出力結果:
[(2, 1, 0, 4, 0),
 (2, 1, 8, 5, 9),
 (2, 4, 13, 5, 11),
 (7, 4, 13, 5, 18),
 (8, 4, 15, 11, 18)]
"""

ちなみに転置したものをもう一度転置すると、元の2次元配列に戻る。

Discussion