ich bin neulich an das Thema Lambda und Filter gekommen. Soweit ich verstanden habe, sind Lambda´s anonyme Funktionen/Methoden sind und die Filter den Datenfluss nach bestimmten Bedingungen herausfiltern und das was überbleibt zurückliefern. Nun ist es ja relativ gut verständlich. Problematisch wird bei der Syntax. Ich hatte als Aufgabe eine Liste durchzuarbeiten und die Zahlen aufsteigend sortieren. Dabei musste beachtet werden, dass nur positive Zahlen berücksichtigt werden und alle negativen Zahlen ihre Position nicht verändern dürfen. Beispiel so einer Liste:
[-1, 150, 190, 170, -1, -1, 160, 180]
Nun habe ich das gelöst auf die übliche Anfänger Art und Weise. Im Internet habe ich jedoch eine andere Lösung gefunden, der ich nur bedingt folgen kann:
Code: Alles auswählen
def sortedList(list1):
list2 = sorted(filter(lambda x: x != -1, list1), reverse=True)
return [list2.pop() if elem != -1 else elem for elem in list1]
Bei der zweiten Zeile wird für mich ein bisschen unübersichtlich. Meine Interpretation wäre:
Wenn das elem nicht -1 ist, schreibt das elem an die Stelle des elem in der list1.
Nun muss ich sagen, dass wärend ich diesen Beitrag geschrieben habe, diesen Teil "[...]else elem for elem in list1" zum ersten Mal erklären konnte, bzw. ins Deutsch übersetzen konnte. Ist meine Interpretation richtig? Könnt ihr vielleicht mir noch etwas dazu erzählen?
Besten Dank und Gruß
winter-mute