Рубрики
Без рубрики

отображение, фильтрация и сокращение функций в Python

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

Автор оригинала: Wajiha.

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 (), как описано в названии, применяет данную функцию к итерациям и возвращает одно значение.

Функция 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”, и мы свяжемся с вами как можно скорее.