vacia una sumar sacar misma llenar lista elementos crear contar comparar comando agregar python list

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



sacar elementos de una lista python (7)

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

def timesfive(number): return number*5 list(map(timesfive,[5, 10, 15, 20, 25]))

Esta pregunta ya tiene una respuesta aquí:

Tengo una lista:

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

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

[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.


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 la 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]


Un enfoque increíblemente rápido es hacer la multiplicación de forma vectorializada en lugar de hacer un bucle en 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, repetirá 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 pitónica 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 funcional puro, también puede utilizar 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 en una lista usando la función incorporada list() (en pyhton-2.x no lo necesita porque el map devuelve una lista de forma 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 es igual que usar for-loop pero más ''pythonic''

lst = [5, 20 ,15] prod = [i * 5 for i in lst] print prod


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]


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