Функции отображения, фильтрации и сокращения в Python: все, что вам нужно знать



Узнайте, что такое функции map (), filter () и reduce () в Python. Также знайте, как использовать их с лямбда-функциями и пользовательскими функциями, а также друг с другом.

Python предоставляет множество встроенных функций, которые предопределены и могут использоваться конечным пользователем, просто вызывая их. Эти функции не только облегчают работу программистов, но и создают стандартную среду программирования. В этой статье вы узнаете о трех таких впечатляющих функциях, а именно о map (), filter и reduce () в .

Прежде чем двигаться дальше, давайте взглянем на содержимое:





Итак, приступим. :)

Что такое функции map (), filter () и reduce () в Python?

Как упоминалось ранее, map (), filter () и reduce () встроены Python. Эти функции обеспечивают функциональное программирование . В функциональном программировании переданные аргументы являются единственными факторами, влияющими на результат. Эти функции могут принимать любую другую функцию в качестве параметра и могут также передаваться другим функциям в качестве параметров. Итак, давайте теперь более подробно рассмотрим каждую из этих функций.



Функция map ():

Функция map () - это тип высшего порядка. Как упоминалось ранее, эта функция принимает другую функцию в качестве параметра вместе с последовательностью итераций и возвращает результат после применения функции к каждой итерации, присутствующей в последовательности. Его синтаксис следующий:

СИНТАКСИС:

карта (функция, итерации)



Здесь функция определяет выражение, которое, в свою очередь, применяется к итерациям. Функция карты может принимать пользовательские функции, а также лямбда-функции в качестве параметра.

Использование пользовательских и лямбда-функций в:

Пользовательские функции в map ():

Функция map () может принимать пользовательские функции в качестве параметров. Параметры этих функций устанавливаются исключительно пользователем или программистом. Например:

метод system.exit завершит приложение.

ПРИМЕР:

def newfunc (a): return a * a x = map (newfunc, (1,2,3,4)) #x - объект карты print (x) print (set (x))

ВЫВОД:

{16, 1, 4, 9}

Как видите, x - это объект карты. В выходных данных следующей части отображается функция карты, принимающая newfunc () в качестве параметра, а затем она применяет a * a ко всем итерациям. В результате значения всех итераций умножаются сами на себя и возвращаются.

НОТА: Вывод не в порядке значений итераций, потому что я использовал функцию set (). Вы также можете использовать функции list () или tuple (), например:

ПРИМЕР:

def newfunc (a): return a * a x = map (newfunc, (1,2,3,4)) #x - объект карты print (x) print (list (x))

ВЫВОД:

[1, 4, 9, 16]

Вы также можете передать более одного списка параметров. Например:

ПРИМЕР:

def func (a, b): вернуть a + b a = map (func, [2, 4, 5], [1,2,3]) print (a) print (tuple (a))

ВЫВОД:

(3, 6, 8)

Теперь давайте посмотрим, как вы можете использовать лямбда-функции внутри функции map ().

Лямбда-функции в map ():

Лямбда-функции - это функции, у которых есть любое имя. Эти функции часто предоставляются в качестве параметров другим функциям. Теперь давайте попробуем встроить лямбда-функции в функцию map (). Рассмотрим следующий пример:

ПРИМЕР:

tup = (5, 7, 22, 97, 54, 62, 77, 23, 73, 61) newtuple = tuple (map (лямбда x: x + 3, tup)) print (newtuple)

ВЫВОД:

(8, 10, 25, 100, 57, 65, 80, 26, 76, 64)

Приведенный выше результат является результатом применения лямбда-выражения (x + 3) к каждому элементу, присутствующему в кортеже.

Функция filter ():

Функция filter () используется для создания списка вывода, состоящего из значений, для которых функция возвращает истину. Его синтаксис следующий:

СИНТАКСИС:

передать по значению vs передать по ссылке java

фильтр (функция, итерации)

Так же, как и map (), эта функция может также принимать пользовательские функции, а также лямбда-функции в качестве параметра.

ПРИМЕР:

def func (x): if x> = 3: return x y = filter (func, (1,2,3,4)) print (y) print (list (y))

ВЫВОД:

[3. 4]

Как видите, y - это объект фильтра, а список - это список значений, которые истинны для условия (x> = 3).

Использование лямбда в filter ():


Лямбда-функция, которая используется в качестве параметра, фактически определяет условие, которое необходимо проверить. Например:

ПРИМЕР:

y = filter (лямбда x: (x> = 3), (1,2,3,4)) print (list (y))

ВЫВОД: [3. 4]

Приведенный выше код дает тот же результат, что и предыдущая функция.

Функция reduce ():

Функция reduce (), как описывает ее название, применяет заданную функцию к итерациям и возвращает единственное значение.

уменьшить карту уменьшить фильтр-edureka

Синтаксис этой функции следующий:

СИНТАКСИС:

уменьшить (функция, итерации)

Здесь функция определяет, какое выражение необходимо применить к итерациям. Эта функция должна быть импортирована из functools. модуль . Например:

ПРИМЕР:

из functools import reduce reduce (лямбда a, b: a + b, [23,21,45,98])

ВЫВОД: 187

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

Функции map (), filter () и reduce () в Python можно использовать вместе друг с другом.

это vs имеет Java

Использование функций map (), filter () и reduce () вместе друг с другом:

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

Давайте сначала попробуем передать функцию filter () в качестве параметра функции map ().

Использование filter () внутри map ():

Приведенный ниже код сначала проверяет, выполняется ли условие (x> = 3) для итераций. Затем вывод отображается с помощью функции map ().

ПРИМЕР:

c = map (лямбда x: x + x, фильтр (лямбда x: (x> = 3), (1,2,3,4))) print (list (c))

ВЫВОД: [6, 8]

Если вы отфильтруете целые числа больше или равные 3 из заданного кортежа, вы получите в результате [3,4]. Затем, если вы сопоставите это с помощью условия (x + x), вы получите [6,8], что является выходом.

Использование map () в filter ():


Когда вы используете функцию 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», и мы свяжемся с вами как можно скорее.

Чтобы получить более глубокие знания о Python и его различных приложениях, вы можете зарегистрироваться в режиме реального времени. с круглосуточной поддержкой и пожизненным доступом.