Schrieb diese Funktion in Python, das eine Matrix transponiert:
def transpose(m):
height = len(m)
width = len(m[0])
return [ [ m[i][j] for i in range(0, height) ] for j in range(0, width) ]
Dabei wurde mir klar, dass ich nicht vollständig verstehe, wie einzelne für Schleifen verschachtelte Zeilen ausgeführt werden. Bitte helfen Sie mir beim Verständnis, indem Sie die folgenden Fragen beantworten:
- In welcher Reihenfolge wird diese for-Schleife ausgeführt?
- Wenn ich eine dreifach verschachtelte for-Schleife hätte, welche Reihenfolge würde sie ausführen?
- Was wäre gleich die gleiche nicht verschachtelte for-Schleife?
Gegeben,
[ function(i,j) for i,j in object ]
- Welcher Typ muss ein Objekt sein, um dieses für die Schleifenstruktur zu verwenden?
- In welcher Reihenfolge werden i und j Elementen im Objekt zugewiesen?
- Kann es durch eine andere for-Schleifenstruktur simuliert werden?
- Kann diese for-Schleife mit einer ähnlichen oder anderen Struktur für die Schleife verschachtelt werden? Und wie würde es aussehen?
Zusätzliche Informationen sind ebenfalls willkommen.
Das könnte Sie interessieren
itertools.product
, das ein iterables Ergebnis liefert, das Tupel von Werten aus allen iterierbaren Werten ergibt, die Sie übergeben. Das heißt, es werdenitertools.product(A, B)
alle Werte der Form ausgegeben(a, b)
, von denen diea
Werte stammenA
und von denen dieb
Werte stammenB
. Beispielsweise:Dies druckt:
Beachten Sie, dass das letzte übergebene Argument
itertools.product
das "innere" ist. Im Allgemeinen ist gleichitertools.product(a0, a1, ... an)
[(i0, i1, ... in) for in in an for in-1 in an-1 ... for i0 in a0]
quelle
Zunächst verwendet Ihr erster Code keine for-Schleife an sich, sondern ein Listenverständnis .
Wäre gleichbedeutend mit
für j im Bereich (0, Breite): für i im Bereich (0, Höhe): m [i] [j]
Ähnlich nistet es im Allgemeinen wie bei Schleifen von rechts nach links. Die Syntax des Listenverständnisses ist jedoch komplexer.
Ich bin mir nicht sicher, was diese Frage stellt
Jedes iterierbare Objekt, das iterierbare Objekte liefert, die genau zwei Objekte ergeben (was für ein Schluck - dh
[(1,2),'ab']
gültig wäre)Die Reihenfolge, in der das Objekt bei der Iteration nachgibt.
i
geht zur ersten Ausbeute,j
zur zweiten.Ja, aber nicht so hübsch. Ich glaube, es ist funktional gleichbedeutend mit:
oder noch besser Karte verwenden :
Aber natürlich würde Funktion erhalten
i
,j
selbst.Ist das nicht die gleiche Frage wie 3?
quelle
Mit der
zip
Funktion können Sie zwei for-Schleifen in derselben Zeile verwendenCode:
Ausgabe:
['Abbas', 'Kamran', 'Ali', 'Asgar', 'Usman', 'Hamza']
Mit der Zip-Funktion können wir also zwei for-Schleifen verwenden oder zwei Listen in derselben Zeile iterieren.
quelle
Der folgende Code enthält die besten Beispiele für verschachtelte Schleifen. Wenn Sie zwei for-Schleifen verwenden, denken Sie bitte daran, dass die Ausgabe der ersten Schleife für die zweite Schleife eingegeben wird. Schleifenbeendigung auch wichtig bei Verwendung der verschachtelten Schleifen
quelle