Python (2.7) クラス内に、その周囲の「セル」の値を 2 次元の numpy 配列で取得する関数があります。インデックスが範囲外の場合、値を None に設定する必要があります。
以下のコードのように、8 つの try/catch ステートメントを記述したり、複数の if x else None ステートメントを使用したりせずに、これを行う方法を見つけるのに苦労しています。どちらも機能しますが、あまりうまく構造化されていないようです。これを行うには、もっと簡単な方法があるに違いないと思います。おそらく、これについて完全に間違った方法で考えているようです。どんな助けでも大歓迎です。
# This will return a dictionary with the values of the surrounding points
def get_next_values(self, column, row):
if not (column < self.COLUMNS and row < self.ROWS):
print "Invalid row/column."
return False
nextHorizIsIndex = True if column < self.COLUMNS - 2 else False
nextVertIsIndex = True if row < self.ROWS - 2 else False
n = self.board[column, row-1] if column > 0 else None
ne = self.board[column+1, row-1] if nextHorizIsIndex else None
e = self.board[column+1, row] if nextHorizIsIndex else None
se = self.board[column+1, row+1] if nextHorizIsIndex and nextVertIsIndex else None
s = self.board[column, row+1] if nextVertIsIndex else None
sw = self.board[column-1, row+1] if nextVertIsIndex else None
w = self.board[column-1, row] if row > 0 else None
nw = self.board[column-1, row-1] if 0 not in [row, column] else None
# debug
print n, ne, e, se, s, sw, w, nw