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?
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?
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
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
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