Python - Splitting-Liste mit Strings und zahlen
myList = [ 4,'a', 'b', 'c', 1 'd', 3]
wie teilt man diese Liste in zwei Listen, die eine enthält Zeichenfolgen und andere enthält Ganzzahlen im elegant/pythonic Weg?
Ausgabe:
myStrList = [ 'a', 'b', 'c', 'd' ]
myIntList = [ 4, 1, 3 ]
HINWEIS: nicht implementiert eine Liste, wie Sie dachte nur, wie zu finden, eine elegante Antwort (ist es?) um ein solches problem.
- Ich denke, Sie brauchen einen regulären Ausdruck
- imho ist es sehr hässliche Lösung.ich würde eher die Iteration über die Liste und split.
- Prüfen von Typen ist nonpythonic, um mit zu beginnen, wie schafft so eine gemischte Liste. Vielleicht sollten Sie sehen, über die Aufteilung der Daten basierend auf deren Zweck auf den Eingang, anstatt daran herum zu hacken später?
- dies ist die imaginäre Liste (nicht implementiert es aber), ich Frage mich nur, gibt es irgendeine elegante Lösung zu diesem problem.
- ein regex ersticken, wenn Sie versuchen, geben Sie eine ganze Zahl (nicht?)
- Die Abstimmung zu schließen, da bist du gefragt, für eine elegante Lösung zu einem problem, das Sie nicht eigentlich Gesicht ist, und dass niemand schreiben eleganten code jemals konfrontiert. (Auch, weil Sie keine Antwort auf die implizite "was haben Sie versucht?")
InformationsquelleAutor ayyayyekokojambo | 2013-02-08
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie andere erwähnt haben, in den Kommentaren, sollten Sie wirklich anfangen, darüber nachzudenken, wie Sie können loszuwerden, die Liste hält, die in-homogene Daten in den ersten Platz. Wenn das allerdings wirklich nicht getan werden, verwende ich eine defaultdict:
Können Sie die Liste Verständnis: -
Teilen Sie die Liste nach Typen gefunden, der in die orginal Liste
Werde ich fasse diesen thread durch die Beantwortung von ein Python-FAQ "wie schreibt man eine Methode, die Argumente in beliebiger Reihenfolge von einem engen Bereich von Typen?"
Vorausgesetzt, die Links-nach-rechts Reihenfolge alle Argumente sind nicht wichtig, versuchen, diese (basierend auf @mgilson 's Antwort):
Rufen Sie nun
cook('string', 'string', range(..), range(..), range(..))
. Die Reihenfolge der Argumente ist stabil, innerhalb dessen Typ.können Sie diesen code als Beispiel, erstellen Sie zwei verschiedene Listen über die Funktion isdigit(),die überprüft, für ganze zahlen in einen string.
isdigit()
Sie überprüfen, ob das element ein string nur eine Zahl enthält, aber nicht zwischen einer Zahl aus einem string (denn Sie können es anwenden, für Streicher). z.B. die Liste['a','b',1,2,3,'10']
zurück[2, 3, 4, 5] ['a', 'b']
statt[1,2,3]['a','b','10']
. Das bringt mich zu dem Fehler: in den Anhängen zum
sollten Sie Anhängenip[x]
. Bemerkung: es ist besserlen(ip)
als hartzucodieren die Länge.10
und'10'
.ip=['a',1,'10',2,3]
. Bitte stecken Sie diesen in den Quelltext an und Sag mir, wie langem
undn
sind.Edit 1: Hier ist eine andere Lösung