Ich habe versucht, mich im Internet nach Antworten auf die Aufteilung einer Zeichenfolge in eine Reihe von Zeichen umzusehen, aber ich kann anscheinend keine einfache Methode finden
str.split(//)
scheint nicht so zu funktionieren wie Ruby. Gibt es eine einfache Möglichkeit, dies ohne Schleifen zu tun?
Antworten:
Sie brauchen eine Liste
quelle
cast_method = lambda x: [x]
Sie nehmen den String und übergeben ihn an list ()
quelle
Sie können dies auch auf sehr einfache Weise ohne list () tun:
quelle
for
, es gibt nicht viel zu erklären. Ich denke, Sie sollten das Python-Tutorial zu Datenstrukturen lesen , insbesondere zum Listenverständnis.list(map(lambda c: c, iter("foobar")))
, aber lesbarer und aussagekräftiger.Wenn Sie Ihren String zeichenweise verarbeiten möchten. Sie haben verschiedene Möglichkeiten.
Ausgabe:
Ausgabe:
Ausgabe:
Ausgabe:
quelle
Ich habe zwei weitere Möglichkeiten untersucht, um diese Aufgabe zu erfüllen. Es kann für jemanden hilfreich sein.
Der erste ist einfach:
Und der zweite Gebrauch
map
undlambda
Funktion. Es kann für komplexere Aufgaben geeignet sein:Zum Beispiel
Weitere Methoden finden Sie in den Python-Dokumenten
quelle
Die Aufgabe besteht darin, die Zeichen der Zeichenfolge zu durchlaufen und in einer Liste zu sammeln. Die naivste Lösung würde aussehen
Natürlich kann es auf nur verkürzt werden
Es gibt jedoch immer noch kürzere Lösungen, die dasselbe tun.
list
Der Konstruktor kann verwendet werden, um alle iterierbaren Elemente (Iteratoren, Listen, Tupel, Zeichenfolgen usw.) in Listen umzuwandeln .Das große Plus ist, dass es sowohl in Python 2 als auch in Python 3 gleich funktioniert.
Ab Python 3.5 (dank des großartigen PEP 448 ) ist es jetzt auch möglich, eine Liste aus jedem iterierbaren Element zu erstellen, indem Sie sie in ein leeres Listenliteral entpacken:
Dies ist übersichtlicher und in einigen Fällen effizienter als der
list
direkte Aufruf des Konstruktors.Ich würde davon abraten , mit
map
-basierten Ansätzen, weilmap
sich nicht um eine Liste in Python 3. Siehe zurückkehren Wie Verwendung Filter, Karte und reduzieren in Python 3 .quelle
Ich brauche nur eine Reihe von Zeichen:
Wenn Sie die Str durch eine bestimmte Str teilen möchten:
quelle
split()
Die eingebaute Funktion trennt den Wert nur auf der Grundlage einer bestimmten Bedingung, kann jedoch in einem einzigen Wort die Bedingung nicht erfüllen. So kann es mit Hilfe von gelöst werdenlist()
. Es ruft das Array intern auf und speichert den Wert auf der Basis eines Arrays.Annehmen,
quelle
Pack sie aus:
quelle
Wenn Sie nur Lesezugriff auf die Zeichenfolge wünschen, können Sie die Array-Notation direkt verwenden.
Könnte zum Testen ohne Verwendung von regulärem Ausdruck nützlich sein. Enthält die Zeichenfolge eine abschließende neue Zeile?
quelle
Nun, so sehr ich die Listenversion (en) mag, hier ist eine andere ausführlichere Art, die ich gefunden habe (aber es ist cool, also dachte ich, ich würde es dem Kampf hinzufügen):
quelle
camelcase = ''.join([text[i].upper() if i % 2 else text[i].lower() for i in range(len(text))])
Ähnlich, gibt
list(string)
jedoch einen Generator zurück, der am Verwendungsort träge ausgewertet wird, sodass der Speicher effizient ist.quelle
Dabei ist a die Zeichenfolge, die Sie trennen möchten. Die Werte "a [i]" sind das individuelle Zeichen der Zeichenfolge, die an eine Liste angehängt werden kann.
quelle
for c in a: print c
ist viel direkter