multiply how example all python list product

how - ¿Hay un producto incorporado() en Python?



python itertools product (4)

Declaración

Si, eso es correcto Guido rechazó la idea de una función prod () incorporada porque pensó que rara vez se necesitaba.

Alternativa con reducir ()

Como sugirió, no es difícil crear su propio uso de reduce() y operator.mul() :

def prod(iterable): return reduce(operator.mul, iterable, 1) >>> prod(range(1, 5)) 24

En Python 3, la función reduce() se movió al módulo functools , por lo que necesitaría agregar:

from functools import reduce

Caso específico: Factoriales

Como nota al margen, el caso de uso de motivación principal para prod () es calcular factoriales. Ya tenemos soporte para eso en el módulo de matemáticas :

>>> import math >>> math.factorial(10) 3628800

Alternativa con logaritmos

Si sus datos consisten en flotantes, puede calcular un producto usando sum () con exponentes y logaritmos:

>>> from math import log, exp >>> data = [1.2, 1.5, 2.5, 0.9, 14.2, 3.8] >>> exp(sum(map(log, data))) 218.53799999999993 >>> 1.2 * 1.5 * 2.5 * 0.9 * 14.2 * 3.8 218.53799999999998

Esta pregunta ya tiene una respuesta aquí:

He estado buscando en un tutorial y un libro, pero no puedo encontrar ninguna mención de una función incorporada del producto, es decir, del mismo tipo que sum (), pero no pude encontrar nada como prod() .

¿Es la única forma en que puedo encontrar el producto de los artículos en una lista importando el operador mul() ?


Como la función reduce () ha sido eliminada en python 3.0 , debe adoptar un enfoque diferente.

Puede usar functools.reduce() para hacer que el cambio se deshaga:

product = functools.reduce(operator.mul, iterable, 1)

O bien, si desea seguir el espíritu del equipo python (que eliminó reduce() porque creen que sería más legible), hágalo con un bucle:

product = 1 for x in iterable: product *= x


No hay product en Python, pero puedes definirlo como

def product(iterable): return reduce(operator.mul, iterable, 1)

O, si tiene NumPy, use numpy.product .


from numpy import multiply, product list1 = [2,2,2] list2 = [2,2,2] mult = 3 prod_of_lists = multiply(list1,list2) >>>[4,4,4] prod_of_list_by_mult = multiply(list1,mult) >>>[6,6,6] prod_of_single_array = product(list1) >>>8

numpy tiene muchas funciones realmente geniales para las listas.