Документация по Python

Функция reduce

В: Документация по Python

Введение

Примеры

Обзор

 # No import needed


# No import required...
from functools import reduce # ... but it can be loaded from the functools module


from functools import reduce # mandatory


 

reduce уменьшает Iterable путем применения функции повторно на следующем элементе iterable и совокупный результате до сих пор.

 def add(s1, s2):
    return s1 + s2

asequence = [1, 2, 3]

reduce(add, asequence)  # equivalent to: add(add(1,2),3)
# Out: 6

 

В этом примере мы определили собственную add функции. Однако, Python поставляется со стандартной эквивалентной функцией в operator модуле:

 import operator
reduce(operator.add, asequence)
# Out: 6

 

reduce также могут быть переданы начальное значение:

 reduce(add, asequence, 10)
# Out: 16 

Используя уменьшить

 def multiply(s1, s2):
    print('{arg1} * {arg2} = {res}'.format(arg1=s1, 
                                           arg2=s2, 
                                           res=s1*s2))
    return s1 * s2

asequence = [1, 2, 3]

 

Дан initializer функция запускается, применяя его к инициализатору и первому Iterable элементу:

 cumprod = reduce(multiply, asequence, 5)
# Out: 5 * 1 = 5
#      5 * 2 = 10
#      10 * 3 = 30
print(cumprod)
# Out: 30

 

Без initializer параметра reduce начинается путем применения функции к первым двум элементам списка:

 cumprod = reduce(multiply, asequence)
# Out: 1 * 2 = 2
#      2 * 3 = 6
print(cumprod)
# Out: 6 

Накопительный продукт

 import operator
reduce(operator.mul, [10, 5, -3])
# Out: -150 

Вариант без короткого замыкания любой / все

reduce не прекращает итерацию до iterable были укомплектовать итерации , поэтому он может быть использован для создания нон короткого замыкания any() или all() функции:

 import operator
# non short-circuit "all"
reduce(operator.and_, [False, True, True, True]) # = False

# non short-circuit "any"
reduce(operator.or_, [True, False, False, False]) # = True 

Синтаксис

Параметры

Примечания

Еще от кодкамп
Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.