Szukaj…


Wprowadzenie

Programowanie funkcjonalne rozkłada problem na zestaw funkcji. Idealnie, funkcje pobierają tylko dane wejściowe i generują dane wyjściowe i nie mają żadnego stanu wewnętrznego, który wpływa na dane wyjściowe wytwarzane dla danych danych wejściowych. Poniżej są techniki funkcjonalne wspólne dla wielu języków: takie jak lambda, mapa, redukcja.

Funkcja Lambda

Anonimowa, wbudowana funkcja zdefiniowana za pomocą lambda. Parametry lambda są zdefiniowane po lewej stronie jelita grubego. Ciało funkcyjne jest zdefiniowane po prawej stronie dwukropka. Wynik uruchomienia treści funkcji jest (niejawnie) zwracany.

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

Funkcja mapy

Mapa ma funkcję i zbiór przedmiotów. Tworzy nową, pustą kolekcję, uruchamia funkcję dla każdego elementu w oryginalnej kolekcji i wstawia każdą zwracaną wartość do nowej kolekcji. Zwraca nową kolekcję.

To jest prosta mapa, która pobiera listę nazw i zwraca listę długości tych nazw:

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

Zmniejsz funkcję

Redukcja ma funkcję i zbiór przedmiotów. Zwraca wartość, która jest tworzona przez połączenie elementów.

To proste zmniejszenie. Zwraca sumę wszystkich pozycji w kolekcji.

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

Funkcja filtra

Filtr ma funkcję i kolekcję. Zwraca kolekcję każdego elementu, dla którego funkcja zwróciła wartość 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow