Hi Liebes Forum,
Ich beschäftige mich gerade mit list comprehension und komme nicht wirklich weiter. Gegeben habe ich eine Liste mit mehreren Unterlisten. In diesen Unterlisten befinden sich mehrere Zahlen in Form von Strings. Nun versuche ich diese Liste so zu verändern, dass die Zahlen in den Unterlisten Ints sind. Dabei bin ich auf das Thema list comprehension und der map Funktion gestoßen, schaffe es aber nicht auf diesen Fall anzuwenden. Die Verschachtelung krieg ich nicht wirklich auf die Reihe. Vielleicht kann mir ja jemand helfen
LG
list comprehension Hilfe
@Kneddel: Schreib das einfach mit zwei ``for``-Schleifen ohne „list comprehension“ (LC) und dann mach Dir klar wie man ganz allgemein eine ``for``-Schleife die Elemente an eine vormals leere Liste anhängt, in eine LC umschreibt. Und das machst Du dann zuerst mit der inneren ``for``-Schleife. Und wenn das funktioniert, wiederholst Du den Vorgang mit der äusseren ``for``-Schleife.
Falls Du es noch nicht getan hast, arbeite das Tutorial in der Python-Dokumentation durch. Da werden LCs, auch verschachtelt, erklärt. Mit Beispielen.
Falls Du es noch nicht getan hast, arbeite das Tutorial in der Python-Dokumentation durch. Da werden LCs, auch verschachtelt, erklärt. Mit Beispielen.
Bisher hab ich noch nichts... Beschäftige mich damit erst seit heute Abend. Mein erster Versuch war:
Klappt aber nicht so wie es soll...
Code: Alles auswählen
result = [int(y) for x in list for y in x]
Werd ich jetzt mal probieren.BlackJack hat geschrieben:@Kneddel: Schreib das einfach mit zwei ``for``-Schleifen ohne „list comprehension“ (LC) und dann mach Dir klar wie man ganz allgemein eine ``for``-Schleife die Elemente an eine vormals leere Liste anhängt, in eine LC umschreibt. Und das machst Du dann zuerst mit der inneren ``for``-Schleife. Und wenn das funktioniert, wiederholst Du den Vorgang mit der äusseren ``for``-Schleife.
Falls Du es noch nicht getan hast, arbeite das Tutorial in der Python-Dokumentation durch. Da werden LCs, auch verschachtelt, erklärt. Mit Beispielen.
Für welche Form der Liste denn? Für sowas wie [['1', '2'], ['4', '3']] klappt es eigentlich schon (du solltest nur vielleicht nicht 'list' überschreiben, auch wenn das hier keinen Fehler auslöst).Kneddel hat geschrieben:Bisher hab ich noch nichts... Beschäftige mich damit erst seit heute Abend. Mein erster Versuch war:Klappt aber nicht so wie es soll...Code: Alles auswählen
result = [int(y) for x in list for y in x]
Edit:
Und weil du map(int, iterable) in deinem Ausgangspost erwähnst: Das ist in dieser Variante eigentlich nur eine Kurzschreibweise für eine entsprechende List Comprehension (Python 2) bzw. einen Generatorausdruck (Python 3). Das hilft vielleicht nicht weiter, wenn das Verständnis von LCs noch Probleme bereitet.
Zuletzt geändert von nezzcarth am Dienstag 14. Februar 2017, 21:55, insgesamt 2-mal geändert.
Das Problem ist, dass die Liste nun keine Sublisten mehr enthalten, welche ich danach noch brauche. Das bereitet mir gerade noch Probleme wie ich das noch reinbekomme.nezzcarth hat geschrieben:Für welche Form der Liste denn? Für sowas wie [['1', '2'], ['4', '3']] klappt es eigentlich schon (du solltest nur vielleicht nicht 'list' überschreiben, auch wenn das hier keinen Fehler auslöst).Kneddel hat geschrieben:Bisher hab ich noch nichts... Beschäftige mich damit erst seit heute Abend. Mein erster Versuch war:Klappt aber nicht so wie es soll...Code: Alles auswählen
result = [int(y) for x in list for y in x]
Edit:
Und weil du map(int, iterable) in deinem Ausgangspost erwähnst: Das ist in dieser Variante eigentlich nur eine Kurzschreibweise für eine entsprechende List Comprehension (Python 2) bzw. einen Generatorausdruck (Python 3). Das hilft vielleicht nicht weiter, wenn das Verständnis von LCs noch Probleme bereitet.
Ja, natürlich sind die weg: Du iterierst zuerst über die äußere Liste (die Listen enthält), dann über diese Teillisten und lässt als Ergebnis die Elemente dieser inneren Listen in eine einzige äußere schreiben. Wenn du die Sublisten erhalten möchtest, muss die hintere Schleife leicht abgewandelt nach vorne in eine eigene List Comprehension wandern.Kneddel hat geschrieben: Das Problem ist, dass die Liste nun keine Sublisten mehr enthalten, welche ich danach noch brauche. Das bereitet mir gerade noch Probleme wie ich das noch reinbekomme.