¿Restar un valor de cada número en una lista en Python?

84

Tengo una lista

 a = [49, 51, 53, 56]

¿Cómo resto 13 de cada valor entero en la lista?

Jaycodez
fuente

Respuestas:

146

Con una lista de comprensión :

a = [x - 13 for x in a]
Ignacio Vázquez-Abrams
fuente
2
Poniendo def minus13(a):la línea de arriba y sangrando un nivel.
Ignacio Vazquez-Abrams
8
¿Por qué a[:]en el lhs en lugar de simplemente asignar de nuevo a a? ¿No a[:]crea una copia de la lista?
istruble
2
istruble: stackoverflow.com/questions/4081561/…
Ignacio Vazquez-Abrams
4
Lo que se debe hacer es que la función devuelva el valor de la comprensión de la lista, y la persona que llama debe decidir reemplazar la secuencia existente si corresponde.
Ignacio Vazquez-Abrams
1
@istruble: Simplemente asignar directamente a un testamento funciona igual de bien. Así a = [x - 13 for x in a]funcionará igual de bien y es menos confuso.
Lennart Regebro
71

Si trabaja mucho con números, es posible que desee echar un vistazo a NumPy . Le permite realizar todo tipo de operaciones directamente en matrices numéricas. Por ejemplo:

>>> import numpy
>>> array = numpy.array([49, 51, 53, 56])
>>> array - 13
array([36, 38, 40, 43])
shang
fuente
1
Hice una prueba rápida y devuelve una nueva matriz sin tocar la matriz original.
Francois
10

Puede utilizar la función map () :

a = list(map(lambda x: x - 13, a))
sputnikus
fuente
7
@ Frost.baka En Python 3, el mapa devuelve el objeto del mapa. En Python 2, devuelve list.
sputnikus
5

Para aclarar una solución ya publicada debido a preguntas en los comentarios.

import numpy

array = numpy.array([49, 51, 53, 56])
array = array - 13

dará salida:

matriz ([36, 38, 40, 43])

JJ K.
fuente
3

Esto funcionará:

for i in range(len(a)):
  a[i] -= 13
Oscar Mederos
fuente
4
La solución de comprensión de listas es mucho más pitónica. Puede que te gusten. docs.python.org/tutorial/…
istruble
¿Quién borró mi comentario? - No veo el sentido de contar la longitud de a. Hacer un cálculo simple.
jaycodez
2
El recuento es necesario, si el algoritmo se va a expresar de esta manera, para que una variable de índice ( i) repita todos los valores de índice posibles. Esta variable de índice es necesaria para mutar cada elemento de la lista.
Santa