Ho una funzione all'interno di una classe Python (2.7) che dovrebbe recuperare i valori delle "celle" attorno ad esso in una matrice numpy bidimensionale. Se l'indice non è compreso nell'intervallo, il valore dovrebbe essere impostato su Nessuno.Imposta nessuno se non esiste l'indice di array numpy
Sto faticando a trovare un modo per farlo senza scrivere 8 istruzioni try/catch, o senza utilizzare più se x altrimenti le istruzioni Nessuna come è nel mio codice qui sotto. Mentre entrambi lavorerebbero, non sembrano molto ben strutturati, e penso che ci sia un modo più semplice per farlo: probabilmente mi sono preso la briga di pensare a questo in modo completamente sbagliato. Qualsiasi aiuto sarebbe molto apprezzato.
# 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
Attenzione per l'indice negativo avvolgente ...! – wim
Non mi era venuto in mente, grazie! – Adam