Was bedeutet : (Doppelpunkt) in Python?
Folgendes Szenario:
a = min (enumerate(variable1), key = lambda variable2:variable2[1]) [0]
Was eine lambda-Funktion ist weiß ich, wäre hier also variable1 der erste Parameter und variable2:variable2[1] der zweite (als Sequenz?)?
und was macht variable2:variable2[1] genau, also ich kenne das mit dem Doppelpunkt nicht.
Danke für alle Antworten!
2 Antworten
Der Doppelpunkt ist Teil des Lambdas:
lambda x:x[2]
Hier mal ein einfaches Beispiel.
So sieht ein Lambda allgemeiner aus:
lambda arguments : expression
In Deinem Fall ist varibale2 das Argument, z.B. ein Tupel, oder eine Sequenz, der Ausdruck variable2[1] greift auf das 2. Element des Tupels zu.
>>> t=(8,12,5,10,22,0,17)
>>> for x in enumerate (t):
... print(x)
...
(0, 8)
(1, 12)
(2, 5)
(3, 10)
(4, 22)
(5, 0)
(6, 17)
enumerate erzeugt Dir eine Aufzählung aus Index und Element. Um jetzt das Minimum zu bestimmen, mußt Du Dir für jedes Paar das 2. Element anschauen. Das wird mit dem Lambda gemacht. Im konkreten Fall würde min nun (5,0) zurückliefern:
>>> min(enumerate(t),key=lambda x:x[1])
(5, 0)
und das angehängte Subscript extrahiert die Position:
>>> min(enumerate(t),key=lambda x:x[1])[0]
5
Kein Thema, ich hatte ja noch ergänzt, im konkreten Fall soll halt einfach der Index des Minimums bestimmt werden. Interessant sind lambdas eben auch beim sortieren komplexer Strukturen, weil Du so den eigentlich Wert extrahieren kannst, bzw. alles was noch als Expression ausdrückbar ist.
lambda Parameter:Funktion
ist die Verwendung. also gibt
lambda variable2:variable2[1])
das 2-te Element von variable2 zurück
Zurückgeliefert wird also der Wert des Ausdrucks? Zu früh rückfrage gestellt... habe es verstanden, vielen lieben Dank!