Der pythonische Ansatz für for: range () - und enumerate () - Schleifen

Der Autor der Notiz, die wir heute veröffentlichen, möchte auf einige der Funktionen der Verwendung von for Schleifen in Python eingehen.



Die for Schleife ist einer der Eckpfeiler der Programmierung. Zukünftige Programmierer lernen diese Zyklen bereits zu Beginn ihres Studiums kennen und nutzen sie nach dem ersten Kennenlernen ständig.

Wenn Sie mit der Entwicklung in Python begonnen haben und Erfahrung mit einer anderen gängigen Programmiersprache wie PHP oder JavaScript haben, sind Sie mit der Verwendung einer Zählervariablen vertraut, in der beispielsweise der Index des aktuellen Elements des Arrays gespeichert wird, das in einer Schleife verarbeitet wird. Hier ist ein Beispiel für die Arbeit mit einer in JavaScript geschriebenen Schleife:

 let scores = [54,67,48,99,27]; for(const i=0; i < scores.length; i++) {   console.log(i, scores[i]); } /* 0 54 1 67 2 48 3 99 4 27 */ 

Wenn Sie mit for Schleifen arbeiten, ist es sehr wichtig zu verstehen, dass diese Schleifen nicht über Arrays iterieren. Sie geben dem Programmierer nur einen Mechanismus zum Arbeiten mit der Zählervariable, mit dem auf die Elemente der verarbeiteten Arrays zugegriffen werden kann.

Im vorherigen Beispiel hat die Variable i keine explizite Beziehung zum scores Array. Es wird nur eine bestimmte Zahl gespeichert, die bei jeder Iteration der Schleife um 1 zunimmt und die sich, wie sich herausstellt, für den sequentiellen Zugriff auf Array-Elemente über ihre Indizes eignet.

Alte (erfolglose) Art, mit Arrays zu arbeiten


Python hat keine traditionellen for Schleifen wie die oben gezeigte. Wenn Sie wie ich sind, besteht Ihr erster Wunsch, Python zu beherrschen, darin, einen Weg zu finden, mit dem Sie vertraut und bequem arbeiten können.

Infolgedessen können Sie die range() Funktion erkennen und in Python etwas Ähnliches wie das Folgende schreiben:

 scores = [54,67,48,99,27] for i in range(len(scores)):   print(i, scores[i]) """ 0 54 1 67 2 48 3 99 4 27 """ 

Das Problem mit dieser Schleife ist, dass sie nicht sehr gut zur Python-Ideologie passt. Darin iterieren wir nicht über die Liste, sondern greifen stattdessen mit der Hilfsvariablen i auf die Elemente der Liste zu.

Tatsächlich gibt es sogar in JavaScript Methoden, mit denen Sie sozusagen ohne Zwischenhändler über Arrays iterieren können. Diese sind für forEach und for of forEach Schleife.

Verwenden der Funktion enumerate ()


Wenn Sie den "Index eines Elements" in einer Python- for Schleife angemessen verfolgen müssen, ist die Funktion enumerate() , mit der Sie das iterierbare Objekt "neu berechnen" können, möglicherweise geeignet. Es kann nicht nur zum Verarbeiten von Listen verwendet werden, sondern auch zum Arbeiten mit anderen Datentypen - mit Zeichenfolgen, Tupeln, Wörterbüchern.

Diese Funktion akzeptiert zwei Argumente: ein iterierbares Objekt und einen optionalen anfänglichen Zählerwert.

Wenn der Anfangswert des Zählers enumerate() nicht übergeben wird, wird er standardmäßig auf 0 . Die Funktion erstellt ein Objekt, das Tupel generiert, die aus dem Index des Elements und diesem Element selbst bestehen.

 scores = [54,67,48,99,27] for i, score in enumerate(scores):   print(i, score) 

Ein solcher Code erwies sich als viel sauberer als der Code aus dem vorherigen Beispiel. Wir haben die Arbeit mit der Liste der Indizes verlassen, wir durchlaufen die Werte selbst, erhalten direkten Zugriff auf sie in der for, Schleife und sehen die Werte, mit denen wir arbeiten, in der Deklaration der Schleife.

Hier ist eine nette Funktion, die diejenigen anspricht, die nummerierte Listen anzeigen müssen, damit die Nummer des ersten Elements nicht 0 gemäß seinem Index, sondern 1 . In der Regel müssen Sie dazu die angezeigte Nummer des Elements ändern. Zum Beispiel - wie folgt: i + 1 . Wenn Sie die Funktion enumerate() verwenden, reicht es aus, als zweites Argument die Nummer anzugeben, ab der Sie mit der Nummerierung beginnen möchten. In unserem Fall - 1 :

 scores = [54,67,48,99,27] for i, score in enumerate(scores, 1):   print(i, score) """ 1 54 2 67 3 48 4 99 5 27 """ 

Zusammenfassung


Hoffentlich hat Ihnen diese kurze Geschichte über for loops in Python ermöglicht, etwas Neues über diese Sprache zu lernen.

Sehr geehrte Leser! Kennen Sie andere Möglichkeiten, um die Funktion enumerate() verwenden? Scheinen mit enumerate() Schleifen lesbarer als mit range(len()) Schleifen?

Source: https://habr.com/ru/post/de485648/


All Articles