Iteration jedes Zeichens in einer Zeichenfolge mit Python

Lesezeit: 3 Minuten

Benutzer-Avatar
Paradies

In C++ kann ich über eine iterieren std::string so was:

std::string str = "Hello World!";

for (int i = 0; i < str.length(); ++i)
{
    std::cout << str[i] << std::endl;
}

Wie iteriere ich über eine Zeichenfolge in Python?

Benutzer-Avatar
Joe Ferndz

Sie können auch Folgendes tun:

txt = "Hello World!"
print (*txt, sep='\n')

Dies verwendet keine Schleifen, aber die interne print-Anweisung kümmert sich darum.

* entpackt den String in eine Liste und schickt ihn an die print-Anweisung

sep='\n' stellt sicher, dass das nächste Zeichen in einer neuen Zeile gedruckt wird

Die Ausgabe wird sein:

H
e
l
l
o
 
W
o
r
l
d
!

Wenn Sie eine Schleifenanweisung benötigen, können Sie, wie andere bereits erwähnt haben, eine for-Schleife wie folgt verwenden:

for x in txt: print (x)

Wenn Sie beim Durchlaufen der Zeichenfolge Zugriff auf den Index benötigen, verwenden Sie enumerate():

>>> for i, c in enumerate('test'):
...     print i, c
... 
0 t
1 e
2 s
3 t

  • Pro-Tipp: Es beginnt bei Null. Wenn Sie es von einem starten müssen: 1 t, 2 e, 3 s, 4 t Verwenden Sie den Parameter “Start”: for i, c in enumerate('test', start=1)

    – Messe

    21. April 2017 um 17:45 Uhr


Benutzer-Avatar
Tim Cooper

Sogar einfacher:

for c in "test":
    print c

  • Pro-Tipp: Es beginnt bei Null. Wenn Sie es von einem starten müssen: 1 t, 2 e, 3 s, 4 t Verwenden Sie den Parameter “Start”: for i, c in enumerate('test', start=1)

    – Messe

    21. April 2017 um 17:45 Uhr


Benutzer-Avatar
Andreas Szeto

Um eine umfassendere Antwort zu geben, kann die C-Methode zum Iterieren über eine Zeichenfolge in Python angewendet werden, wenn Sie wirklich einen quadratischen Stift in ein rundes Loch zwingen möchten.

i = 0
while i < len(str):
    print str[i]
    i += 1

Aber andererseits, warum sollte man das tun, wenn Strings von Natur aus iterierbar sind?

for i in str:
    print i

  • Anstelle Ihrer ersten While-Schleife können Sie Folgendes tun: for i in range(len(str)): print(str[i]) Was meiner Meinung nach besser ist, als den Zähler alleine verwalten zu müssen. Noch besser ist Marcogs Antwort mit enumerate.

    – aiham

    13. April 2011 um 6:39 Uhr


  • Das mag daran liegen, dass ich C so lange benutzt habe, aber am Ende verwende ich fast immer diese C-artige Methode. Zum Beispiel habe ich eine Datei mit einigen verstreuten 4-stelligen Zahlen, die alle mit 0 beginnen. Also muss ich eine “0” finden und sie und die nächsten 3 Zeichen greifen und weitermachen, ohne die Zahl zu duplizieren, falls vorhanden eine weitere 0 dahinter. Keine der Methoden “for c in str” oder “for i,c in enumerate(str)” funktioniert, weil ich die Kontrolle über den Index benötige. Ich bin mir sicher, dass ein regulärer Ausdruck viel besser wäre.

    – gkimsey

    13. März 2013 um 15:22 Uhr

  • for i in range(len(...)) ist böse. In Python 2.x, range() erstellt eine Liste, sodass Sie bei einer sehr langen Länge möglicherweise einen sehr großen Speicherblock zuweisen. Zumindest verwenden xrange() in diesen Fällen. Außerdem ist das wiederholte Indizieren derselben Zeichenfolge viel langsamer als das direkte Iterieren über die Zeichenfolge. Wenn Sie den Index benötigen, verwenden Sie enumerate().

    – izak

    7. Juni 2016 um 7:49 Uhr

1005590cookie-checkIteration jedes Zeichens in einer Zeichenfolge mit Python

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy