Tôi có một hàm trong lớp Python (2.7) sẽ truy xuất các giá trị của 'ô' xung quanh nó trong mảng 2 chiều. Nếu chỉ mục nằm ngoài phạm vi, tôi sẽ đặt giá trị là Không.Đặt không nếu chỉ mục mảng numpy không tồn tại
Tôi đang cố gắng tìm cách để thực hiện điều này mà không cần viết 8 câu lệnh try/catch hoặc không sử dụng nhiều câu lệnh if x else None như trong mã của tôi bên dưới. Trong khi cả hai đều làm việc, họ dường như không được cấu trúc tốt, và tôi nghĩ rằng phải có một cách đơn giản hơn để làm điều này - tôi có thể bắt gặp suy nghĩ về điều này một cách hoàn toàn sai. Bất kì sự trợ giúp nào đều được đánh giá cao.
# 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
Xem ra chỉ số phủ định xung quanh ...! – wim
Nó đã không xảy ra với tôi, cảm ơn! – Adam