Ich versuche, die Diagonale von einer Matrix in Python zu bekommen, ohne numpy
zu verwenden (ich kann es wirklich nicht benutzen). Weiß jemand hier, wie es geht?Get diagonal ohne numpy zu verwenden?
Beispiel dessen, was ich zu bekommen:
get_diagonal ([[1,2,3,4],[5,6,7,8],[9,10,11,12]], 1, 1, 1)
Result: [1, 6, 11]
Oder wie:
get_diagonal ([[1,2,3,4],[5,6,7,8],[9,10,11,12]], 1, 2, 1)
Result: [2, 7, 12]
Bis weiß, dass ich eine Menge Sachen ausprobiert habe aber nicht funktioniert.
def obter_diagonal(matrix, line, column, direc):
d = []
if direc == 1:
for i in matrix:
for j in i:
if all(i == line, j == column):
d.extend(matrix[i][j])
else:
for i in matrix:
for j in i:
d.extend[len(matrix)-1-i][j]
return d
Wenn direc==1
Ich brauche die diagonal zu erhalten, die von links> rechts geht, oben-> unten.
Wenn direc==-1
müssen die Diag gehen, die von rechts geht-> links, oben-> unten.
Die Tatsache, dass die '' i0' und j0' Position Argumente repräsentieren nicht den direkten Index Ein Element in "m" ist verwirrend, da Sequenzen in Python von Null ausgehend indiziert werden, nicht wie sie sind. Mit anderen Worten, "get_diagonal (m, 1, 4, 1)" findet die Diagonale des Elements 'm [0] [3]' nicht 'm [1] [4]', wie die meisten wahrscheinlich annehmen würden. – martineau
Ändern von 'get_diagonal()' in 'return [m [(i0 + i)% len (m)] [(j0 + d * i)% len (m [0])] für i im Bereich (len (m))]) 'würde die' i0' und 'j0' Positionsargumente auf null basierende Indexwerte machen, wie es üblich ist. – martineau
Ich nehme an, dass ich eine 1-basierte Indexierung verwendet habe, weil das die OP von den Beispielen in der Frage wollte. – bcorso