In C++ kann ich eine Iteration über eine std::string
wie diese:
std::string str = "Hello World!";
for (int i = 0; i < str.length(); ++i)
{
std::cout << str[i] << std::endl;
}
Wie kann ich in Python über eine Zeichenkette iterieren?
In C++ kann ich eine Iteration über eine std::string
wie diese:
std::string str = "Hello World!";
for (int i = 0; i < str.length(); ++i)
{
std::cout << str[i] << std::endl;
}
Wie kann ich in Python über eine Zeichenkette iterieren?
Wie Johannes schon sagte,
for c in "string":
#do something with c
Sie können so ziemlich alles in Python iterieren, indem Sie die for loop
konstruieren,
zum Beispiel, open("file.txt")
gibt ein Datei-Objekt zurück (und öffnet die Datei), Iteration darüber durchläuft die Zeilen in dieser Datei
with open(filename) as f:
for line in f:
# do something with line
Wenn das nach Magie klingt, dann ist es das auch, aber die Idee dahinter ist ganz einfach.
Es gibt ein einfaches Iterator-Protokoll, das auf jede Art von Objekt angewendet werden kann, um die for
Schleife zu bearbeiten.
Implementieren Sie einfach einen Iterator, der eine next()
Methode, und implementieren eine __iter__
Methode für eine Klasse, um sie iterierbar zu machen. (Die __iter__
sollte natürlich ein Iterator-Objekt zurückgeben, d.h. ein Objekt, das die next()
)
Wenn Sie beim Durchlaufen der Zeichenkette 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
Nur um eine umfassendere Antwort zu geben, kann die C-Weise der Iteration über eine Zeichenfolge in Python gelten, wenn Sie wirklich ein eckiger Pflock in ein rundes Loch zwingen wollen.
i = 0
while i < len(str):
print str[i]
i += 1
Aber warum sollte man das auch tun, wenn Zeichenketten von Natur aus iterierbar sind?
for i in str:
print i
Nun, Sie können auch etwas Interessantes wie dieses tun und Ihre Arbeit mit einer for-Schleife erledigen
#suppose you have variable name
name = "Mr.Suryaa"
for index in range ( len ( name ) ):
print ( name[index] ) #just like c and c++
Die Antwort lautet
M r . S u r y a a
Da range() jedoch eine Liste der Werte erstellt, die eine Sequenz ist, können Sie den Namen direkt verwenden
for e in name:
print(e)
Dies führt ebenfalls zum gleichen Ergebnis und sieht auch besser aus und funktioniert mit jeder Sequenz wie Liste, Tupel und Wörterbuch.
Wir haben zwei eingebaute Funktionen ( BIFs in der Python-Community ) verwendet
1) range() - range() BIF wird zur Erstellung von Indizes verwendet Beispiel
for i in range ( 5 ) :
can produce 0 , 1 , 2 , 3 , 4
2) len() - len() BIF wird verwendet, um die Länge einer gegebenen Zeichenkette zu ermitteln
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.