Lasst uns die Aufgabe Aussage wiederholen: „den Minimalwert von jede Zeile erhalten und von jede Spalte dieser Matrix“.
Okay, also, wenn die Matrix n
Reihen hat, sollten Sie n
Minimalwerte erhalten, eine für jede Zeile. Klingt interessant, oder? Also, der Code sieht so aus:
result1 = [<something> for row in matrix]
Nun, was müssen Sie mit jeder Zeile tun? Rechts finden Sie den Mindestwert, der super einfach:
result1 = [min(row) for row in matrix]
Als result
, finden Sie eine Liste von n
Werte erhalten, so wie erwartet.
Warten, bis jetzt haben wir gefunden nur das Minimum für jede Zeile, aber nicht für jede Spalte, ist dies so tun lassen, wie gut!
Vorausgesetzt, Sie verwenden Python 3.x, können Sie einige ziemlich erstaunliche Sachen tun. Zum Beispiel können Sie eine Schleife über Spalten leicht:
result2 = [min(column) for column in zip(*matrix)] # notice the asterisk!
Der Stern in zip(*matrix)
macht jede Zeile von matrix
ein separates Argument von zip
‚s, wie folgt aus:
zip(matrix[0], matrix[1], matrix[2], matrix[3])
Das sieht nicht sehr lesbar und ist abhängig von der Anzahl der Zeilen in matrix
(im Grunde müssen Sie sie hart-Code), und der Stern lässt Sie viel sauberer Code schreiben.
zip
kehrt Tupeln und die i
ten Tupel enthält die i
ten Werte von alle die Zeilen, so sind diese Tupel tatsächlich die Spalten der Matrix gegeben.
Nun, Sie können diesen Code ein bisschen hässlich finden, möchten Sie vielleicht die gleiche Sache in einer prägnanteren Art und Weise schreiben. Sicher genug, können Sie einige funktionale Programmierung Magie verwenden:
Diese beiden Ansätze sind absolut gleichwertig.
können Sie zeilenweise und spaltenweise iterieren. und Max und Min für jede Zeile und Spalte erhalten. Versuchen Sie zuerst, min für jede Zeile zu erhalten, dann auch max. Dann mach es spaltenweise. ATB :) –