Ich bin neu bei Python und ich brauche etwas Hilfe dabei.
Aufgabe: eine Liste gegeben - & gt; words = ['aba', 'xyz', 'xgx', 'dssd', 'sdjh']
Ich muss das erste und das letzte Element jeder Zeichenfolge in der Liste vergleichen, Wenn das erste und das letzte Element in der Zeichenfolge identisch sind, erhöhen Sie die Anzahl.
Vorgegebene Liste ist:
%Vor%Wenn ich manuell versuche, kann ich über jedes Element der Zeichenfolgen in der Liste iterieren.
%Vor%Aber, wenn ich versuche, über alle Elemente aller Strings in der Liste mit einer FOR-Schleife zu iterieren.
Ich bekomme einen Fehler.
%Vor%FEHLER:
%Vor%Bitte lassen Sie mich wissen, wie würde ich erreichen, das erste und das letzte Element einer Nr. zu vergleichen. Zeichenfolgen in der Liste.
Vielen Dank im Voraus.
Versuchen Sie:
%Vor% for word in words
gibt die Elemente von words
zurück, nicht den Index. Wenn Sie den Index irgendwann benötigen, verwenden Sie enumerate
:
würde ausgeben
%Vor% Das -1
in word[-1]
oben ist Pythons Art, "das letzte Element" zu sagen. word[-2]
würde Ihnen das vorletzte Element geben, und so weiter.
Sie können auch einen Generator verwenden, um dies zu erreichen.
%Vor% Der Grund ist, dass in Ihrem zweiten Beispiel i
das Wort selbst ist, nicht der Index des Wortes. Also
würde das Äquivalent zu Ihrem Code sein.
Der Vorschlag, dass die Verwendung von range(len())
der Verwendung von enumerate()
entspricht, ist falsch. Sie geben die gleichen Ergebnisse zurück, aber sie sind nicht gleich.
Die Verwendung von enumerate()
gibt Ihnen tatsächlich Schlüssel / Wert-Paare. Verwenden von range(len())
nicht.
Lassen Sie uns zuerst range(len())
überprüfen (ausgehend vom Beispiel des ursprünglichen Posters):
Dies gibt uns eine einfache Liste:
%Vor%... und die Elemente in dieser Liste dienen als "Indizes" in unseren Ergebnissen.
Also machen wir dasselbe mit unserer enumerate()
version:
Das gibt uns sicher keine Liste:
%Vor%... also lasst es in eine Liste verwandeln und sehen was passiert:
%Vor%Es gibt uns:
%Vor%Dies sind tatsächliche Schlüssel / Wert-Paare.
Also das ...
%Vor%... nimmt tatsächlich die erste Liste (Wörter) und erstellt eine zweite einfache Liste des Bereichs, der durch die Länge der ersten Liste angezeigt wird.
Wir haben also zwei einfache Listen, und wir drucken nur ein Element aus jeder Liste, um unsere sogenannten "Schlüssel / Wert" -Paare zu erhalten.
Aber sie sind nicht wirklich Schlüssel / Wert-Paare; Sie sind lediglich zwei einzelne Elemente, die gleichzeitig aus verschiedenen Listen gedruckt werden.
Während der enumerate ()
-Code:
... erstellt auch eine zweite Liste. Aber diese Liste ist eigentlich eine Liste von Schlüssel / Wert-Paaren, und wir fragen nach jedem Schlüssel und Wert aus einer einzigen Quelle - anstatt aus zwei Listen (wie wir es oben getan haben).
>Wir drucken also die gleichen Ergebnisse, aber die Quellen sind völlig anders - und werden komplett anders gehandhabt.