2016-06-29 5 views
-2

Для Python 2.7, что является логикой нижнего выражения лямбда, смущенной этой частью int(s), кажется, что переменная не называется s.Проблема с выражением лямбда Python 2.7

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

спасибо заранее, Лин

+1

Это аргумент это переход к 'функции lambda'. – Kasramvd

+1

Не точный дубликат, но может быть полезным: http://stackoverflow.com/questions/890128/why-are-python-lambdas-useful?lq=1 – Michael0x2a

+0

@ Kasramvd, спасибо и проголосуйте. Таким образом, код просто делает явное преобразование типов для каждого элемента, возвращаемого из 'x.split (':')' и формирует кортеж? –

ответ

4

lambda функция использовалась с map, так что параметры для lambda передаются от второго аргумента map. Понимание того, как map работы поможет вам лучше понять, как лямбда принимает его параметр:

Применить функцию к каждому пункту из iterable и возвращает список результатов. Если передаются дополнительные Iterable аргументов, функция должна считать, что множество аргументов и применяется к элементам из всех итерируемых параллельно

Так s представляет каждый элемент из итератора x.split(':') и int(s) подразумевает явное приведение пункта s на целое число, где int(x) является объектом возврата lambda.

Вы можете прочитать больше о lambda и map

+0

Спасибо Мозес, проголосуйте. Таким образом, код просто делает явное преобразование типов для каждого элемента, возвращаемого из 'x.split (':')' и формирует кортеж? –

+1

Точно. Вы сформулировали это лучше, чем я сделал –

+0

Спасибо Мозес, отметьте свой ответ как ответ. :) –

Смежные вопросы