Necesito escribir una función que tome una lista de números y los multiplique . Ejemplo:
[1,2,3,4,5,6]me dará 1*2*3*4*5*6. Realmente podría usar tu ayuda.
python
list
multiplication
usuario1897814
fuente
fuente

lambdatomé un promedio de .02s / 1000 repeticiones, mientras queoperator.multomé un promedio de .009s / 1000 repeticiones, haciendooperator.mulun orden de magnitud más rápido.operator.mulva directamente a Cmath.prod([1,2,3,4,5,6]). (requiere importación, por supuesto)Puedes usar:
Ver
reduceyoperator.muldocumentaciones para una explicación.Necesitas la
import functoolslínea en Python 3+.fuente
reduce()función se ha eliminado del espacio de nombres global y se ha colocado en elfunctoolsmódulo. Entonces, en python3 necesitas decirfrom functools import reduce.lambda x,y: x*ytambién funciona en lugar deoperator.mulUsaría el
numpy.prodpara realizar la tarea. Vea abajo.fuente
result = np.prod(mylist)numpy.int32como el anterior 2) Para listas pequeñas esto será significativamente más lento, ya que NumPy necesita asignar una matriz (relevante si se repite con frecuencia)np.prod(np.array(range(1,21)))reduce.Si desea evitar importar algo y evitar áreas más complejas de Python, puede usar un bucle for simple
fuente
Comenzando
Python 3.8,.prodse ha incluido una función almathmódulo en la biblioteca estándar:El método devuelve el producto de un
startvalor (predeterminado: 1) multiplicado por un iterable de números:Si el iterable está vacío, esto producirá
1(o elstartvalor, si se proporciona).fuente
Aquí hay algunas mediciones de rendimiento de mi máquina. Relevante en caso de que esto se realice para entradas pequeñas en un ciclo de larga duración:
Resultados:
Puede ver que Numpy es bastante más lento en entradas más pequeñas, ya que asigna una matriz antes de que se realice la multiplicación. Además, ten cuidado con el desbordamiento en Numpy.
fuente
multiply_functoolsy estoymultiply_numpyabrumado por tener que buscar elnp,functoolsy losoperatorglobales, seguido de búsquedas de atributos. ¿Te importaría cambiarte a locales?_reduce=functools.reduce,_mul = operator.mul` en la firma de la función y luegoreturn _reduce(_mul, iterable)en el cuerpo, etc.np.prod()opción comienza se vuelve más rápida con 100 elementos o más.Personalmente, me gusta esto para una función que multiplica todos los elementos de una lista genérica:
Es compacto, usa cosas simples (una variable y un bucle for), y me parece intuitivo (parece que pensaría en el problema, solo toma uno, multiplícalo, luego multiplícalo por el siguiente, ¡y así sucesivamente! )
fuente
for i in n:entoncestotal *= i? ¿No sería mucho más sencillo?La forma simple es:
fuente
np.prod(your_Array)Numpytiene laprod()función que devuelve el producto de una lista, o en este caso, ya que es numpy, es el producto de una matriz sobre un eje dado:... o simplemente puedes importar
numpy.prod():fuente
Encontré esta pregunta hoy, pero me di cuenta de que no tiene el caso donde hay
Noneen la lista. Entonces, la solución completa sería:En el caso de la adición, tenemos:
fuente
fuente
*, de modo que eval reconocerá esto como multiplicativo. Me pregunto cómo es el rendimiento de esto, especialmente en comparación con otras solucionesMe gustaría esto de la siguiente manera:
fuente
Este es mi código:
resultado: ('1 * 1 * 2 * 3 * 4', 24)
fuente
¿Qué tal el uso de la recursividad?
fuente
Mi solución:
fuente
'' 'el único método simple para comprender el uso lógico del bucle' ''
Vuelta = [2,5,7,7,9] x = 1 para i en Vuelta: x = i * x print (x)
fuente
Es muy sencillo no importar nada. Este es mi codigo. Esto definirá una función que multiplica todos los elementos de una lista y devuelve su producto.
fuente