PEP 212 - Schleifenzähler Iteration

Standard for-Schleifen in Python iterieren über die Elemente einer Folge [1]. Oft ist es wünschenswert, eine Schleife über die Indizes oder sowohl die Elemente und die Indizes statt.

Die gemeinsamen Idiome verwendet, um dies zu erreichen, sind nicht intuitiv. Dieser PEP schlägt zwei verschiedene Möglichkeiten, die Indizes auszusetzen.

Das aktuelle Idiom über die Indizes für Looping nutzt die eingebaute Funktion range:

Looping über beiden Elemente und Indizes können entweder durch das alte Idiom oder mit der neuen Zip integrierte Funktion [2] erreicht werden.

Es gibt drei Lösungen, die diskutiert wurden. Man fügt eine nicht-reserviertes Schlüsselwort, fügt die beiden anderen integrierten Funktionen. Eine dritte Lösung fügt Methoden zur Sequenz Objekten.

Diese Lösung würde die Syntax der for-Schleife erstreckt sich durch das Hinzufügen eines optionalen Indexierungsklausel, die kann auch anstelle der verwendet werden in-Klausel.

Looping über die Indizes einer Sequenz würde somit werden:

Looping über beide Indizes und Elemente würden ähnlich sein:

Diese Lösung fügt zwei integrierte Funktionen Indizes und iRange. Die Semantik dieser kann wie folgt beschrieben werden:

Diese Funktionen können entweder mit Spannung oder träge umgesetzt werden und sollte leicht zu erweitern, um mehr als eine Sequenz Argument zu akzeptieren.

Die Verwendung dieser Funktionen würde die Idiome für Schleifen über die Indizes vereinfachen und über beide Elemente und Indizes:

Diese Lösung schlägt die Zugabe von Indizes. Elemente und Werte Methoden zu Sequenzen, die sich nur über Indizes ermöglichen Looping, beide Indizes und Elementen, und die Elemente nur jeweils.

Dies würde vereinfacht immens die Idiome über Indizes Looping und zum Durchschleifen über beiden Elemente und Indizes:

Zusätzlich würde es erlauben, über die Elemente von Sequenzen und Wörterbücher in einer konsistenten Art und Weise zu tun, Looping:

Für alle drei Lösungen einige mehr oder weniger grobe Patches existieren als Patches bei Source:

  • zum Indexieren i a in l. Aussetzen der for-Schleife counter [3]
  • füge Indizes () und iRange (), um Einbauten [4]
  • Objekte hinzufügen () Methode Listobject [5]

Alle von ihnen werden von der BDFL auf und abgelehnt ausgesprochen worden.

Da keine Keywords hinzugefügt werden und die Semantik der vorhandenen Code bleibt unverändert, alle drei Lösungen können ohne brechen vorhandenen Code implementiert werden.

In Verbindung stehende Artikel