No. In idiomatic python, you would not use a functional approach for something like this, but if you really wanted to, you could do:
def teeing(reducer1, reducer2):
return lambda acc,elem: (
reducer1(acc[0],elem),
reducer2(acc[1],elem)
)
functools.reduce(
teeing(
(lambda l,elem: [elem] + l),
(lambda l,elem: elem.price + l)
),
cart.getProducts(),
([], 0)
)