我在 Python (2.7) 类中有一个函数,它应该在二维 numpy 数组中检索它周围的“单元格”的值。如果索引超出范围,我会将值设置为无。
我正在努力寻找一种方法来做到这一点,而无需编写 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