Kotmee Messenger
ВойтиРегистрация
Программирование для начинающих - CodeChick

d: произведение элементов без цикла и без ловушки пустого списка

Нужно перемножить числа в списке: факториал по частям, произведение простых, масштаб коэффициентов. Ручной цикл с acc = 1 легко забыть инициализировать — особенно когда список может быть пустым. С Python 3.8 есть prod в модуле math. Он берёт iterable и перемножает элементы. Пустой iterable даёт 1 — это математически верный «пустой продукт», как sum([]) даёт 0. from math import prod print(prod([2, 3, 5, 7])) # 210 print(prod(range(1, 6))) # 120, то есть 5! print(prod([])) # 1 print(prod([2, 3], start=10)) # 60 Аргумент start — начальное значение (по умолчанию 1). Удобно, когда произведение уже начато с константы. В нашем запуске на Python 3.13 prod([0.5] * 20) вернул около 9,5e-7: много маленьких float быстро уходит к нулю. Для таких случаев считают сумму логарифмов, а не «голое» произведение. Когда брать: целые и умеренные float, олимпиадные произведения по модулю — сначала prod, потом остаток % M (или сразу умножай с модулем в цикле, если числа огромные). Когда не брать: нужен «бегущий» префикс произведений — тогда accumulate из itertools с mul из operator; и не путай с sum. источник: #шпаргалка