2016-06-29 12 views
-2

Für Python 2.7, was ist die Logik von unten Lambda-Ausdruck, verwirrt durch diesen Teil int(s), scheint es keine Variable namens s.Python 2.7 Lambda-Ausdruck Problem

x = [tuple(map(lambda s: int(s), x.split(':'))) for x in y.split(' ')] 

Dank im Voraus, Lin

+1

Das ist das Argument, lesen Sie es auf 'lambda' Funktion übergeben wird. – Kasramvd

+1

Nicht ein genaues Duplikat, aber könnte nützlich sein: http://StackOverflow.com/Questions/890128/Why-are-Python-Lambdas-useful?lq=1 – Michael0x2a

+0

@Kasramvd, danke und stimmen auf. Also der Code nur explizite Typumwandlung für jedes Element, das von 'x.split (':')' zurückgegeben wird und ein Tupel bilden? –

Antwort

4

Die lambda Funktion mit map verwendet wurde, so dass die Parameter für die lambda aus dem zweiten Argument map geben. Zu verstehen, wie map Arbeiten Sie besser verstehen helfen, wie der Lambda-Parameter übernimmt,: jedes Element von iterable

Funktion Nehmen und eine Liste der Ergebnisse zurück. Wenn zusätzliche iterable Argumente übergeben werden, Funktion muss nehmen, dass viele Argumente und wird von allen Iterables parallel

auf die Elemente angewendet So s alle Elemente aus dem iterable x.split(':') und int(s) stellt impliziert eine explizite Umwandlung von Artikel s Integer, wobei int(x) das Rückgabeobjekt der lambda ist.

Sie können mehr über lambda und map

+0

Danke Moses, wähle ab. Also der Code nur explizite Typumwandlung für jedes Element, das von 'x.split (':')' zurückgegeben wird und ein Tupel bilden? –

+1

Genau. Du hast es besser formuliert als ich getan habe –

+0

Danke Moses, markiere deine Antwort als Antwort. :) –