Verständnis für eine verschachtelte Liste auflisten?
Habe ich diese verschachtelte Liste:
l = [['40', '20', '10', '30'], ['20', '20', '20', '20', '20', '30', '20'], ['30', '20', '30', '50', '10', '30', '20', '20', '20'], ['100', '100'], ['100', '100', '100', '100', '100'], ['100', '100', '100', '100']]
Nun, was ich will zu tun ist, konvertieren Sie jedes element in einer Liste zu schweben. Meine Lösung ist diese:
newList = []
for x in l:
for y in x:
newList.append(float(y))
Aber kann getan werden, mithilfe von geschachtelten Liste Verständnis, richtig?
was ich getan habe, ist:
[float(y) for y in x for x in l]
Aber dann das Ergebnis ist eine Reihe von 100 ist mit der Summe von 2400.
jede Lösung, eine Erklärung wäre sehr geschätzt werden. Danke!
InformationsquelleAutor der Frage Boy Pasmo | 2013-08-06
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, wie würden Sie tun dies mit einer verschachtelten Liste Verständnis:
Diese geben Ihnen eine Liste von Listen, ähnlich zu dem, was Sie begannen, mit Ausnahme der mit Schwimmern statt des strings. Wenn Sie möchten, eine flache Liste und Sie würde
[float(y) for x in l for y in x]
.InformationsquelleAutor der Antwort Andrew Clark
Hier ist, wie geschachtelte list comprehension funktioniert:
InformationsquelleAutor der Antwort Rahul
InformationsquelleAutor der Antwort falsetru
Nicht sicher, was das gewünschte Ergebnis ist, aber wenn du mit list das Verständnis, die Reihenfolge folgt der Reihenfolge von nested loops, den Sie nach hinten. Also ich hab das, was ich denke, Sie wollen mit:
Das Prinzip ist: die Verwendung der gleichen Reihenfolge, die Sie verwenden würden, im schreiben wie verschachtelte for-Schleifen.
InformationsquelleAutor der Antwort Harry Binswanger
Da bin ich etwas spät hier, aber ich wollte zu teilen, wie eigentlich list comprehension funktioniert besonders verschachtelte Liste Verständnis :
ist eigentlich dasselbe wie :
Und nun verschachtelte Liste Verständnis :
ist dasselbe wie ;
Ausgabe:
InformationsquelleAutor der Antwort Ayodhyankit Paul
Wenn Sie nicht wie verschachtelte Liste Verstehens, können Sie Gebrauch machen von der "anzeigen auch die Funktion,
InformationsquelleAutor der Antwort narayan
Hatte ich ein ähnliches problem zu lösen und so kam ich über diese Frage. Ich habe ein performance-Vergleich von Andrew Clark und narayan die Antwort, die ich gerne teilen möchte.
Der primäre Unterschied zwischen beiden Antworten ist, wie Sie Durchlaufen inneren Listen. Einer von Ihnen verwendet builtin anzeigenwährend andere mit list comprehension. Map-Funktion hat leichten performance-Vorteil zu seinen entsprechenden Liste Verständnis, wenn es nicht erforderlich ist, die Lambda-Ausdrücke. So ist im Kontext dieser Frage
map
ausführen sollte, etwas besser als list comprehension.Ermöglicht die performance-benchmark um zu sehen, ob es tatsächlich wahr ist. Ich benutzte python-version 3.5.0, um alle diese tests. Im ersten Satz von tests, die würde ich gerne behalten, Elemente pro Liste werden 10 und variieren die Anzahl der Listen, aus 10-100,000
In die nächste Reihe von tests, die ich ansprechen möchte Anzahl der Elemente pro Listen zu 100.
Werfen wir einen mutigen Schritt und ändern Sie die Anzahl der Elemente in Listen zu 1000
Aus diesen Tests können wir schließen, dass
map
hat einen performance-Vorteil gegenüber der Liste Verständnis in diesem Fall. Dies gilt auch, wenn Sie versuchen, zu werfen, um entwederint
oderstr
. Für eine kleine Anzahl von Listen mit weniger Elementen pro Liste, der Unterschied ist zu vernachlässigen. Für größere Listen mit mehr Elementen pro Liste könnte man verwenden möchtemap
anstelle von list comprehension, aber es völlig abhängig von der Anwendung benötigt.Aber ich persönlich finde Liste Verständnis mehr lesbar und idiomatischer als
map
. Es ist ein de-facto-standard in python. In der Regel sind die Menschen mehr beherrschen und komfortabel(speziell Anfänger) mit list comprehension alsmap
.InformationsquelleAutor der Antwort bro-grammer
Ja, Sie können es tun mit so einem code:
InformationsquelleAutor der Antwort Victor
Dieses Problem kann gelöst werden, ohne mit for-Schleife.Eine einzige Zeile code genügt. Über Verschachtelte Map mit lambda-Funktion funktioniert auch hier.
- Und Output-Liste wäre wie folgt:
InformationsquelleAutor der Antwort Aakash Goel
Der beste Weg, dies zu tun, meiner Meinung nach ist die Verwendung von python ist
itertools
Paket.InformationsquelleAutor der Antwort Thomasillo
Erreicht werden kann dies mit list comprehension:
InformationsquelleAutor der Antwort ADITYA KUMAR