2011-07-11 19 views
15

¿Cómo puedo, por ejemplo, tomar [111, 222, 333] y multiplicarlo por 3 para obtener [333, 666, 999]?Haciendo matemáticas en una lista en python

+0

Puede usar una [lista de comprensión] (http://docs.python.org/howto/functional.html#generator-expressions-and-list-comprehensions). También puede echar un vistazo a [Aprenda Python de la manera difícil] (http://learnpythonthehardway.org/book/) – Telemachus

+0

@telemachus Realmente no entendí eso, ¿puede darme un código relacionado con el ejemplo en mi pregunta? – JShoe

Respuesta

24
[3*x for x in [111, 222, 333]] 
12

Si usted va a estar haciendo un montón de operaciones de la matriz, entonces es probable que le resulte útil para instalar Numpy. Luego puede usar operaciones aritméticas ordinarias en cuanto a los elementos en las matrices, y hay muchas funciones útiles para calcular con las matrices.

>>> import numpy 
>>> a = numpy.array([111,222,333]) 
>>> a * 3 
array([333, 666, 999]) 
>>> a + 7 
array([118, 229, 340]) 
>>> numpy.dot(a, a) 
172494 
>>> numpy.mean(a), numpy.std(a) 
(222.0, 90.631120482977593) 
1

Como alternativa se puede utilizar el comando de asignación como en el siguiente:

map(lambda x: 3*x, [111, 222, 333]) 

bastante útil si tiene una función más compleja de aplicar a una secuencia.

+0

Esto simplemente devuelve un algún puntero de memoria, ¿cómo se obtienen los datos del mismo? – george

+0

@george esto probablemente ya no se aplique, pero si ayuda a alguien más: 'map' y' list' son dos tipos de datos diferentes (creo que esto se convirtió explícitamente en el caso de python 3.x) para convertir un 'map' en una 'lista', simplemente use la función' list() '. Entonces el ejemplo anterior se convertiría en 'lista (mapa (lambda x: 3 * x, [111, 222, 333]))' – Ronikos