2011-02-07 8 views
38

sto ancora leggendo il tutorial Python 3.1.3 e incontrato il seguente problema:Sottrai un valore da ogni numero in un elenco in Python?

Come si rimuove un valore da un gruppo di numeri?

# A list with a group of values 
a = [49, 51, 53, 56] 

Come faccio a sottrarre 13 da ogni valore intero nella lista?

# Attempting to minus 13 from this list - FAIL! 
(a[:] = a[:] - 13) 

risposta

70

Con una lista di comprensione.

a[:] = [x - 13 for x in a] 
+0

Grazie, buon lavoro. :) Come si inserisce in una funzione rapidamente? – Josh

+1

Inserendo 'def minus13 (a):' sulla riga in alto e indentando un livello. –

+4

Perché 'a [:]' su lhs invece di assegnare nuovamente a 'a'? Non 'a [:]' crea una copia della lista? – istruble

2

Ciò funzionerà:

for i in range(len(a)): 
    a[i] -= 13 
+2

La soluzione di comprensione delle liste è molto più pitonica. Potrebbero piacerti. http://docs.python.org/tutorial/datastructures.html#list-comprehensions – istruble

+0

grazie @istruble;) –

+0

Chi ha cancellato il mio commento? - Non vedo il punto nel contare la lunghezza di a. Per fare un semplice calcolo. – Josh

31

Se si lavora con numeri molto, si potrebbe desiderare di dare un'occhiata a NumPy. Ti consente di eseguire qualsiasi tipo di operazione direttamente su array numerici. Per esempio:

>>> import numpy 
>>> array = numpy.array([49, 51, 53, 56]) 
>>> array - 13 
array([36, 38, 40, 43]) 
+0

Grazie, terrò questo a mente. Proverò a capire come funziona Python, quindi guarderò in futuro. Al momento eseguirò molte modifiche XML, al lavoro sfortunatamente :). Ma mi piacerebbe diventare più efficiente nella programmazione. Questo aiuterà con l'editing XML. – Josh

8

È possibile utilizzare la funzione map():

a = list(map(lambda x: x - 13, a)) 
+1

Perché creare un elenco di mappe se la mappa restituisce già un elenco? –

+2

@ Frost.baka In Python 3, la mappa restituisce l'oggetto mappa. In Python 2, restituisce l'elenco. – sputnikus

+0

bizzarro ... ma da qui il nome "mappa" :) –

Problemi correlati