Поиск…


Вступление

Функциональное программирование разлагает проблему на набор функций. В идеале, функции принимают только входные данные и производят выходные данные и не имеют никакого внутреннего состояния, которое влияет на выход, созданный для данного входа. Ниже приведены функциональные методы, общие для многих языков: например, лямбда, карта, сокращение.

Лямбда-функция

Анонимная, встроенная функция, определенная с помощью лямбда. Параметры лямбда определены слева от двоеточия. Тело функции определено справа от двоеточия. Результат работы тела функции (неявно) возвращен.

s=lambda x:x*x
s(2)    =>4

Функция карты

Карта принимает функцию и набор элементов. Он создает новую пустую коллекцию, запускает функцию для каждого элемента в исходной коллекции и вставляет каждое возвращаемое значение в новую коллекцию. Он возвращает новую коллекцию.

Это простая карта, которая берет список имен и возвращает список длин этих имен:

name_lengths = map(len, ["Mary", "Isla", "Sam"])
print(name_lengths)    =>[4, 4, 3]

Уменьшить функцию

Уменьшение принимает функцию и набор элементов. Он возвращает значение, которое создается путем объединения элементов.

Это простое сокращение. Он возвращает сумму всех элементов в коллекции.

total = reduce(lambda a, x: a + x, [0, 1, 2, 3, 4])
print(total)    =>10

Функция фильтра

Фильтр принимает функцию и коллекцию. Он возвращает коллекцию каждого элемента, для которого функция вернула True.

arr=[1,2,3,4,5,6]
[i for i in filter(lambda x:x>4,arr)]    # outputs[5,6]


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow