¿Cómo multiplico cada elemento de una lista por un número?

Tengo una lista:

my_list = [1, 2, 3, 4, 5] 

¿Cómo puedo multiplicar cada elemento de my_list por 5? La salida debe ser:

 [5, 10, 15, 20, 25] 

Puedes usar una lista de comprensión:

 my_list = [1, 2, 3, 4, 5] my_new_list = [i * 5 for i in my_list] >>> print(my_new_list) [5, 10, 15, 20, 25] 

Tenga en cuenta que una comprensión de lista es generalmente una forma más eficiente de hacer un bucle for :

 my_new_list = [] for i in my_list: my_new_list.append(i * 5) >>> print(my_new_list) [5, 10, 15, 20, 25] 

Como alternativa, aquí hay una solución que utiliza el popular paquete Pandas:

 import pandas as pd s = pd.Series(my_list) >>> s * 5 0 5 1 10 2 15 3 20 4 25 dtype: int64 

O, si solo quieres la lista:

 >>> (s * 5).tolist() [5, 10, 15, 20, 25] 

Puedes hacerlo en el lugar así:

  l = [1, 2, 3, 4, 5] l[:] = [x * 5 for x in l] 

Esto no requiere importaciones adicionales y es muy pythonic.

Un enfoque increíblemente rápido es hacer la multiplicación de forma vectorializada en lugar de hacer un bucle sobre la lista. Numpy ya ha proporcionado una forma muy sencilla y práctica para esto que puede utilizar.

 >>> import numpy as np >>> >>> my_list = np.array([1, 2, 3, 4, 5]) >>> >>> my_list * 5 array([ 5, 10, 15, 20, 25]) 

Tenga en cuenta que esto no funciona con las listas nativas de Python. Si multiplica un número por una lista, se repetirán los elementos del tamaño de ese número.

 In [15]: my_list *= 1000 In [16]: len(my_list) Out[16]: 5000 

Si desea un enfoque basado en Python puro, usar una lista de comprensión es básicamente la forma más pythonica de hacerlo.

 In [6]: my_list = [1, 2, 3, 4, 5] In [7]: [5 * i for i in my_list] Out[7]: [5, 10, 15, 20, 25] 

Además de la comprensión de listas, como un enfoque puramente funcional, también puede usar la función map() incorporada de la siguiente manera:

 In [10]: list(map((5).__mul__, my_list)) Out[10]: [5, 10, 15, 20, 25] 

Este código pasa todos los elementos dentro de my_list al método __mul__ 5 y devuelve un objeto similar a un iterador (en python-3.x). Luego, puede convertir el iterador a la lista usando la función incorporada list() (en pyhton-2.x no lo necesita porque el map devuelve una lista de manera predeterminada).

puntos de referencia:

 In [18]: %timeit [5 * i for i in my_list] 463 ns ± 10.6 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) In [19]: %timeit list(map((5).__mul__, my_list)) 784 ns ± 10.7 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) In [20]: %timeit [5 * i for i in my_list * 100000] 20.8 ms ± 115 µs per loop (mean ± std. dev. of 7 runs, 10 loops each) In [21]: %timeit list(map((5).__mul__, my_list * 100000)) 30.6 ms ± 169 µs per loop (mean ± std. dev. of 7 runs, 10 loops each) In [24]: arr = np.array(my_list * 100000) In [25]: %timeit arr * 5 899 µs ± 4.98 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each) 

Ya que creo que eres nuevo con Python, hagamos el camino largo, recorra en iteración su lista usando for loop y multiplique y agregue cada elemento a una nueva lista.

usando para bucle

 lst = [5, 20 ,15] product = [] for i in lst: product.append(i*5) print product 

usando la comprensión de lista, esto también es igual que usar for-loop pero más ‘pythonic’

 lst = [5, 20 ,15] prod = [i * 5 for i in lst] print prod 
 from functools import partial as p from operator import mul map(p(mul,5),my_list) 

es una forma en que podría hacerlo … su profesor probablemente conoce una forma mucho menos complicada que probablemente se cubrió en clase

La mejor manera es usar la comprensión de la lista:

 def map_to_list(my_list, n): # multiply every value in my_list by n # Use list comprehension! my_new_list = [i * n for i in my_list] return my_new_list # To test: print(map_to_list([1,2,3], -1)) 

Devoluciones: [-1, -2, -3]

Con mapa (no tan bueno, pero otro enfoque del problema):

 list(map(lambda x: x*5,[5, 10, 15, 20, 25]))