2016-08-30 4 views
1
ls = ['abc', 56, 49, 63, 66, 80] 
for i in ls: 
    if(isinstance(i, int) or isinstance(i, float)): 
     for i in range(len(ls)): 
      ls[i] = str(ls[i]) 

Kann ich wissen, wie das Listenverständnis des obigen Codes zu erstellen?Wie zu Python-Liste Verständnis zu konvertieren

ich folgendes versuche aber nicht

if (s for s in ls isinstance(s, int) or isinstance(s, float)): 
    for i in range(len(ls)): 
     ls[i] = str(ls[i]) 
+0

Ist es beabsichtigt, dass die letzte Nummer alle Elemente in der Liste ersetzt? –

+0

Nur ein zufälliges Beispiel, eine Mischung aus Zahl und String. Es kann auch schweben. – dnez

Antwort

6

Für Ihr Beispiel zu arbeiten, wo Sie entweder Strings oder ganze Zahlen oder Schwimmer haben, können Sie eine einfache Liste Verständnis verwenden können:

ls = ['abc', 56, 49, 63, 66, 80] 
print([str(l) for l in ls]) 

Oder alternativ, Sie können map verwenden:

print(list(map(str, ls))) 

Wenn Sie nur c wollen onvert floats und integers in Strings (und ignorieren alles andere wie Booleans, Dezimal-Objekte, etc.):

+0

Danke für die schnelle Hilfe! Ich versuche, Listenelemente in Zeichenfolge zu konvertieren, nur wenn ich es in der Liste gefunden habe, aber ich denke, es ist gut, nur in Zeichenfolge während der Schleife zu konvertieren. – dnez

+0

Beachten Sie, dass Sie "oder" nicht mit "isinstance" verwenden müssen; 'isinstance' akzeptiert auch ein Tupel (so' (int, float) '), zusätzlich würde dies nicht * bool's * herausfiltern, da' bool' eine Unterklasse von 'int' ist. –