Рубрики

Reduce () в Python

Функция redu (fun, seq) используется для применения определенной функции, переданной в ее аргументе, ко всем элементам списка, упомянутым в переданной последовательности. Эта функция определена в модуле « functools ».

Работает :

  • На первом этапе выбираются первые два элемента последовательности и получается результат.
  • Следующим шагом является применение той же функции к ранее полученному результату, а число просто следует за вторым элементом, и результат снова сохраняется.
  • Этот процесс продолжается до тех пор, пока в контейнере не останется больше элементов.
  • Окончательный результат возвращается и печатается на консоли.

# Python-код для демонстрации работы метода limit ()

  
# импорт functools для метода limit ()

import functools

  
# инициализирующий список

lis = [ 1 , 3, 5, 6, 2, ]

  
# с помощью метода Reduce для вычисления суммы списка

print ("The sum of the list elements is : ",end="")

print (functools.reduce(lambda a,b : a+b,lis))

  
# с помощью Reduce для вычисления максимального элемента из списка

print ("The maximum element of the list is : ",end="")

print (functools.reduce(lambda a,b : a if a > b else b,lis))

Выход:

The sum of the list elements is : 17
The maximum element of the list is : 6

Использование функций оператора

Reduce () также может быть объединен с функциями оператора для достижения функциональности, аналогичной лямбда-функциям, и делает код более читабельным.

# Python-код для демонстрации работы метода limit ()
# использование операторских функций

  
# импорт functools для метода limit ()

import functools

  
# оператор импорта для операторских функций

import operator

  
# инициализирующий список

lis = [ 1 , 3, 5, 6, 2, ]

  
# с помощью метода Reduce для вычисления суммы списка
# использование операторских функций

print ("The sum of the list elements is : ",end="")

print (functools.reduce(operator.add,lis))

  
# используя Reduce для вычисления продукта
# использование операторских функций

print ("The product of list elements is : ",end="")

print (functools.reduce(operator.mul,lis))

  
# с помощью редуктора объединить строку

print ("The concatenated product is : ",end="")

print (functools.reduce(operator.add,["geeks","for","geeks"]))

Выход

The sum of the list elements is : 17
The product of list elements is : 180
The concatenated product is : geeksforgeeks

уменьшить () против накопить ()

Как Reduce (), так и накапливать () могут быть использованы для вычисления суммирования элементов последовательности. Но есть различия в аспектах реализации в обоих из них.

  • Reduce () определяется в модуле «functools», накапливается () в модуле «itertools».
  • Reduce () сохраняет промежуточный результат и возвращает только окончательное значение суммирования. Принимая во внимание, что метод накопления () возвращает список, содержащий промежуточные результаты. Последний номер возвращаемого списка является значением суммирования списка.
  • Reduce (Fun, Seq) принимает функцию в качестве первого и последовательности в качестве второго аргумента. В отличие от накопления (seq, fun) принимает последовательность в качестве 1-го аргумента и функцию в качестве 2-го аргумента.

# код Python для демонстрации суммирования
# используя Reduce () и накапливать ()

  
# импорт itertools для накопления ()

import itertools

  
# импорт functools для метода limit ()

import functools

  
# инициализирующий список

lis = [ 1, 3, 4, 10, 4 ]

  
# суммирование печати с использованием накопления ()

print ("The summation of list using accumulate is :",end="")

print (list(itertools.accumulate(lis,lambda x,y : x+y)))

  
# суммирование печати с использованием Redu ()

print ("The summation of list using reduce is :",end="")

print (functools.reduce(lambda x,y:x+y,lis))

Выход:

The summation of list using accumulate is :[1, 4, 8, 18, 22]
The summation of list using reduce is :22

Эта статья предоставлена Манджитом Сингхом (С.Нандини) . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Reduce () в Python

0.00 (0%) 0 votes