У меня есть задание в mooc, где мне нужно закодировать функцию, которая возвращает кумулятивную сумму, совокупный продукт, максимальный и минимальный входной список.
Эта часть курса была посвящена функциональному программированию, поэтому я хотел все рассказать об этом, хотя я могу использовать другие способы.
Так что я попытался это:карта списка функций и аргументов: проблема с распаковкой
from operator import mul
from itertools import repeat
from functools import reduce
def reduce2(l):
print(l)
return reduce(*l)
def numbers(l):
return tuple(map(reduce2, zip([sum, mul,min, max], repeat(l,4))))
l=[1,2,3,4,5]
numbers(l)
Моя проблема заключается в том, что она не работает. zip будет пропускать только один объект для уменьшения, если я использую его внутри карты, и распаковка zip даст 4 кортежа (список функций и аргументов l), поэтому я решил уменьшить2 по этой причине, я хотел распаковать zip внутри него, но он не работал.
Python возвращает объект TypeError: int 'is is iterable
Я думал, что я могу использовать return reduce (l [0], l [1]) в reduce2, но есть все тот же Error.
Я не понимаю поведение python здесь. Если я просто использую return reduce (l), он снова возвращает TypeError: уменьшает ожидаемое как минимум 2 аргумента, получил 1
Что здесь происходит? Как я могу заставить его работать? Спасибо за помощь.
Большое спасибо за точность об условных обозначениях. Я не знал об этом.Хорошо сделанный для добавления, на самом деле сумма является избыточной с уменьшением, теперь я понимаю. –