формат
лямбда argument1, argument2, ... argumentN: выражение квадрат = лямбда х: х ** 2 печати (квадрат (2))
И разница между регулярной функцией
л = [( лямбда - х: х ** 2) (х) для х в диапазоне (10 )] печать (список (л)) [0, 1, 4, 9, 16, 25, 36, 49, 64, 81 ]
= L [(. 1, 20), (9, 10.), (2, -1 (3, 0.) )] L.sort (ключ = лямбда Х: Х [1.]) # По Список предшественников второй Мета сортировка элементы печати (L) , выходной [( 2, -1), (3, 0), (9, 10), (1, 20)]
Код может быть упрощен с помощью лямбды
квадрат = отображение ( лямбда - х: х ** 2, [1, 2, 3, 4, 5 ]) печать (список ( в квадрате))
Над этим кодом, если не обычный лямбда-выражения и функции:
Защиту squared2 (х): возвращение х [1] , если isinstance (х, кортеж) еще х ** 2 квадрат = карта (squared2, [1, 2, 3, 4, 5, (1,3 )]) печать (список ( в квадрате))
Python Функциональное программирование
Функция программирования Python имеет три основные функции карты (), уменьшить (), фильтр ()
отображение (функция, итерируемый [, iterable2])
карта обход итерируемые взяты элементы последовательно передаваемые в функции функции параметра, например: каждый элемент увеличиваются в два раза
л = [1, 2, 3, 4, 5 ] new_list = отображение ( лямбда - х: х * 2, л) # [2, 4, 6, 8, 10]
фильтр (функция, итерация)
и карта фильтра, как итерируемый обход, и функция последовательно проходит, за исключением того, что каждая функция фильтра определяет результат является истинным или ложным, результат представляет собой композиция из списка элементов возвращает истину
Пример: Возвращает список всех четных
л = [1, 2, 3, 4, 5 ] new_list = фильтр ( лямбда - х:% 2 == 0, л) # [2, 4]
уменьшить (функция, итерируемый [, инициализатор])
В котором целевая функция представляет собой функцию, которая имеет два заранее определенные параметры, выраженные в Iterable каждого элемента и результатах последнего вызова, используя функцию вычисления, окончательные возвращает единственное значение.
Источник сотрудничать уменьшить понять:
Защита уменьшайте (функцию, итерация, инициализатор = None): это = ИТЭР (итерация) , если инициализатор не None: попробуйте : инициализатор = следующий (это) , за исключением StopIteration: поднять TypeError ( « уменьшить () пустую последовательность, без начального значения » ) accum_value = инициализатор для й в нем: accum_value = функция (accum_value, х) возвращение accum_value
Пример накопленных элементов в списке
от functools импорта уменьшить л = [1,2,3,4,5 ] результат = уменьшить ( лямбда х, у: х + у, л) печать (результат) # 15 результат = уменьшить ( лямбда х, у: х + у, л, 10 ) для печати (результат) # 25
вопросов
Словарь д = { 'Mike': 10, 'люси': 2 'бен': 30} сортируются в порядке убывания значения
d = { ' Mike ' : 10, ' люси ' : 2, ' бен ' : 30 } d = упорядоченные (d.Items (), ключ = лямбда - х: х [1], обратный = TRUE) # [( 'бен », 30), ( 'Mike', 10), ( 'Lucy', 2)] d = ДИКТ (г) печати (г)
Ссылка:
«Основные технологии и практический Python» Geek Time