Python предоставляет множество встроенных функций, которые предопределены и могут быть использованы конечным пользователем, просто вызвав их. Эти функции не только облегчают работу программистов, но и создают стандартную среду кодирования. В этой статье вы узнаете о трех таких впечатляющих функциях, а именно map(), filter и reduce() в Python.
Так что давайте начнем.
Что такое функции map(), filter() и reduce() в Python?
Как упоминалось ранее, map(), filter() и reduce() являются встроенными функциями Python. Эти функции обеспечивают функциональный аспект программирования Python. В функциональном программировании переданные аргументы являются единственными факторами, определяющими результат. Эти функции могут принимать любую другую функцию в качестве параметра и также могут быть предоставлены другим функциям в качестве параметров. Итак, давайте теперь более глубоко рассмотрим каждую из этих функций.
Функция map():
Функция map ()-это тип более высокого порядка. Как упоминалось ранее, эта функция принимает другую функцию в качестве параметра вместе с последовательностью итераций и возвращает результат после применения функции к каждой итерации, присутствующей в последовательности. Его синтаксис выглядит следующим образом:
СИНТАКСИС:
карта(функция, итеративная)
Здесь функция определяет выражение, которое, в свою очередь, применяется к итерациям. Функция map может принимать в качестве параметра пользовательские функции, а также лямбда-функции.
Использование пользовательских и лямбда-функций в:
Пользовательские функции в карте():
Функция map() может принимать пользовательские функции в качестве параметров. Параметры этих функций устанавливаются исключительно пользователем или программистом. Например:
ПРИМЕР:
def newfunc(a): return a*a x = map(newfunc, (1,2,3,4)) #x is the map object print(x) print(set(x))
ВЫХОД:
<объект карты в 0x00000284B9AEADD8>
{16, 1, 4, 9}
Как вы можете видеть, x-это объект карты. В следующем выводе части отображается функция map, принимающая newfunc() в качестве параметра, а затем она применяет a*a ко всем итерациям. В результате значения всех итераций умножаются сами на себя и возвращаются.
ПРИМЕЧАНИЕ: Вывод не в порядке значений итераций, потому что я использовал функцию set (). Вы также можете использовать функции list() или tuple (), например:
ПРИМЕР:
def newfunc(a): return a*a x = map(newfunc, (1,2,3,4)) #x is the map object print(x) print(list(x))
ВЫХОД:
<объект карты в 0x00000284B9AEA940>
[1, 4, 9, 16]
Вы также можете передать более одного списка параметров. Например:
ПРИМЕР:
def func(a, b): return a + b a = map(func, [2, 4, 5], [1,2,3]) print(a) print(tuple(a))
ВЫХОД:
<объект карты в 0x00000284B9BA1E80>
(3, 6, 8)
Теперь давайте посмотрим, как вы можете использовать лямбда-функции в функции map ().
Лямбда-функции внутри карты():
Лямбда-функции – это функции, которые имеют любое имя. Эти функции часто предоставляются в качестве параметров другим функциям. Теперь давайте попробуем встроить лямбда-функции в функцию map (). Рассмотрим следующий пример:
ПРИМЕР:
tup= (5, 7, 22, 97, 54, 62, 77, 23, 73, 61) newtuple = tuple(map(lambda x: x+3 , tup)) print(newtuple)
ВЫХОД:
(8, 10, 25, 100, 57, 65, 80, 26, 76, 64)
Приведенный выше вывод является результатом применения лямбда-выражения (x+3) к каждому элементу, присутствующему в кортеже.
Функция filter():
Функция filter() используется для создания выходного списка, состоящего из значений, для которых функция возвращает true. Синтаксис его выглядит следующим образом:
СИНТАКСИС:
фильтр(функция, итерационная)
Так же, как и map (), эта функция может использоваться также может принимать в качестве параметра пользовательские функции, а также лямбда-функции.
ПРИМЕР:
def func(x): if x>=3: return x y = filter(func, (1,2,3,4)) print(y) print(list(y))
ВЫХОД:
<объект фильтра в 0x00000284B9BBCC50>
[3, 4]
Как вы можете видеть, y-это объект фильтра, а список-это список значений, которые являются истинными для условия).
Использование лямбда внутри фильтра():
Лямбда-функция, используемая в качестве параметра, фактически определяет условие, которое должно быть проверено. Например:
ПРИМЕР:
y = filter(lambda x: (x>=3), (1,2,3,4)) print(list(y))
ВЫВОД: [3, 4]
Приведенный выше код выдает тот же результат, что и предыдущая функция.
Функция reduce():
Функция reduce (), как описано в названии, применяет данную функцию к итерациям и возвращает одно значение.
Синтаксис этой функции выглядит следующим образом:
СИНТАКСИС:
уменьшить(функция, итеративная)
Функция здесь определяет, какое выражение должно быть применено к итерациям. Эта функция должна быть импортирована из модуля functools. например:
ПРИМЕР:
from functools import reduce reduce(lambda a,b: a+b,[23,21,45,98])
ВЫВОД: 187
В приведенном выше примере функция reduce последовательно добавляет каждую итерацию, присутствующую в списке, и возвращает один вывод.
Функции map(), filter() и reduce() в Python можно использовать вместе друг с другом.
Использование функций map(),filter() и reduce() вместе друг с другом:
Когда вы делаете это, сначала решаются внутренние функции, а затем внешние функции работают на выходе внутренних функций.
Давайте сначала попробуем передать функцию filter() в качестве параметра функции map ().
Использование фильтра() в карте():
Приведенный ниже код сначала проверяет условие) на истинность для итераций. Затем выходные данные отображаются с помощью функции map ().
ПРИМЕР:
c = map(lambda x:x+x,filter(lambda x: (x>=3), (1,2,3,4))) print(list(c))
ВЫВОД: [6, 8]
Если вы отфильтруете целые числа, большие или равные 3 из данного кортежа, в результате вы получите [3,4]. Затем, если вы сопоставите это с помощью условия(x+x), вы получите [6,8], что является результатом.
Использование map() в фильтре():
Когда вы используете функцию map() в функции filter (), итеративные объекты сначала обрабатываются функцией map, а затем к ним применяется условие filter ().
ПРИМЕР:
c = filter(lambda x: (x>=3),map(lambda x:x+x, (1,2,3,4))) #lambda x: (x>=3) print(list(c))
ВЫВОД: [4, 6, 8]
Использование map() и filter() в reduce():
Выходные данные внутренних функций уменьшаются в соответствии с условием, поставляемым в функцию reduce ().
ПРИМЕР:
d = reduce(lambda x,y: x+y,map(lambda x:x+x,filter(lambda x: (x>=3), (1,2,3,4)))) print(d)
ВЫВОД: 14
Вывод является результатом [6,8], который является результатом внутренних функций map() и filter ().
Таким образом, мы подошли к концу этой статьи о функциях map(), filter() и reduce в Python. Надеюсь, вы все ясно поняли. Убедитесь, что вы практикуете как можно больше и возвращаете свой опыт.
У вас есть к нам вопрос? Пожалуйста, упомяните об этом в разделе комментариев этого блога “Функции map (), filter() и reduce() в Python”, и мы свяжемся с вами как можно скорее.