Примечания | Функциональное программирование на Python

Примечания | Функциональное программирование на Python
Заглавное изображение: с сайта plxabay

Особенность функционального программирования заключается в том, что оно позволяет передавать саму функцию в другую функцию в качестве параметра, а также позволяет возвращать функцию.
Функциональное программирование на Python в основном использует следующие четыре основные функции:
(1), map ()
(2), reduce ()
(3), filter ()
(4), sorted ()
и анонимную функцию lambda (), часто используемую в в сочетании с ними.

Один, карта

Общий метод вызова функции map () выглядит следующим образом:

map(function, interable)

Два параметра в функции map () являются обязательными. Первый параметр - это имя функции или анонимная функция, а второй параметр - повторяемый объект, например список, кортеж и т. Д.
Функция, реализованная функцией map (), состоит в том, чтобы по очереди передать элементы в interable функции для выполнения и возврата результата. В python2.x результат возвращается как новый список, а в python3.x он возвращает объект карты. Вы можете использовать метод list (), чтобы получить содержимое объекта карты, или можете просмотреть его в цикле.
Следующий пример (python3):

>>> map(lambda x: x*2, [1,2,3,4,5])

<map object at 0x0000013D497E92E8>

>>> list(map(lambda x: x*2, [1,2,3,4,5]))

[2, 4, 6, 8, 10]

>>> for i in map(lambda x: x*2, [1,2,3,4,5]):

...     print(i)

...

2

4

6

8

10

>>>

Конечно, map () по-прежнему может передавать несколько целевых объектов, как показано ниже:

>>> list(map(lambda x,y: x+y, [1,2,3,4,5], [6,7,8,9,10]))

[7, 9, 11, 13, 15]

>>>

При передаче нескольких целевых объектов сначала ваше тело функции принимает несколько параметров.Например, если вы передадите приведенный выше пример и передадите два целевых объекта, функция принимает два параметра, а именно x, y. Когда передаются несколько целевых объектов, функция принимает значения из них по очереди, затем формирует новый кортеж и, наконец, передает кортеж в функцию. Как и в приведенном выше примере, в первый раз (1,6) передается в Функция получает результат 7, второй раз (2,7) получает результат 9 и так далее.

Два, уменьшить

В python3 reduce () был удален из глобального пространства имен. Теперь он помещен в модуль functools. Чтобы использовать его, вам необходимо сначала импортировать модуль. Общие методы вызова reduce () следующие:

from functools import reduce

reduce(function, interable)

Первый параметр - это имя функции или анонимная функция, второй параметр - это повторяемый объект, а третий параметр - начальное значение (необязательный параметр), и его функция - возвращать результат вычисления функции. следующее:

>>> from functools import reduce

>>> reduce(lambda x,y: x+y, [1,2,3,4,5])

15

>>> reduce(lambda x,y: x*y, [1,2,3,4,5])

120

>>> reduce(lambda x,y: x*y, [1,2,3,4,5],100)

12000

Принцип работы reduce () заключается в том, чтобы по очереди взять элемент в интерируемом объекте, вычислить с последним результатом и, наконец, вернуть результат. Если параметры по умолчанию не переданы, первый параметр будет результатом первого вычисления, а значение будет передано из второго параметра. Если есть параметры по умолчанию, вычислить непосредственно из первого параметра и значения по умолчанию, а затем продолжить.

Три, фильтр

Формат вызова функции filter () следующий:

filter(function, iterable)

Два параметра функции filter (): первый - это имя функции или анонимная функция, а второй - повторяемый объект, например список. Функция filer () похожа на функцию map (). Они вычисляются из объекта interable и по очереди передаются в функцию. Разница в том, что функция filter () будет оценивать логическое значение результата каждого выполнения, и только значение bool имеет значение True для фильтрации. В python2 он по-прежнему возвращает список, в python3 он возвращает объект фильтра. Вы можете использовать метод и цикл list (), чтобы получить значение внутри. следующее:

>>> list(filter(lambda x: x/2, [1,2,3,4,5]))

[1, 2, 3, 4, 5]

>>> list(filter(lambda x: x%2, [1,2,3,4,5]))

[1, 3, 5]

>>>

四 、 отсортировано

Метод вызова функции sorted () выглядит следующим образом:

sorted(iterable, key=None, reverse=False)

Описания параметров следующие:
interable - это повторяемый объект, такой как список, кортеж и т. Д.;
Key, в основном, элемент, используемый для сравнения, это просто параметр, конкретный параметр берется из повторяемого объекта и указывает один повторяемых объектов Элемент для сортировки;
reverse, правило сортировки, reverse = True означает порядок убывания, reverse = False означает порядок возрастания, значение по умолчанию - False;
следующий пример:

>>> sorted([1,9,8,2,3])

[1, 2, 3, 8, 9]

>>> sorted([1,9,8,2,3], reverse=True)

[9, 8, 3, 2, 1]

>>> sorted(L, key=lambda x:x[1])

[('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]

>>>

Пять, резюме

Преимущества функционального программирования заключаются в следующем:
(1) код более лаконичен;
(2) в коде нет тела цикла, отсутствует много временных переменных и логика проще;
(3) наборы данных, операции и возвращаемые значения собраны вместе

рекомендация

отblog.51cto.com/15080014/2654770