2012-02-16 3 views

risposta

77
new_list = [x+1 for x in my_list] 
+3

Perché non 'per l'e in LST: e + = 1' lavorare? –

+6

Questo discorso lo spiega: fatti e miti circa Python Nomi e Valori: http://nedbatchelder.com/text/names1.html –

+0

√ informazioni impressionante. Aprire gli occhi. –

12

Le altre risposte sulla comprensione di elenchi sono probabilmente la soluzione migliore per l'aggiunta semplice, ma se si dispone di una funzione più complessa che è necessario applicare a tutti gli elementi allora map potrebbe essere una buona soluzione.

Nel tuo esempio sarebbe:

>>> map(lambda x:x+1, [1,2,3]) 
[2,3,4] 
+3

'mappa (1 .__ add__, ...)' funziona troppo. Si noti che è necessario uno spazio tra '1' e' .' per impedire al parser di pensare che si tratti di un float. –

4

Python 2+:

>>> mylist = [1,2,3] 
>>> map(lambda x: x + 1, mylist) 
[2, 3, 4] 

Python 3+:

>>> mylist = [1,2,3] 
>>> list(map(lambda x: x + 1, mylist)) 
[2, 3, 4] 
2

In primo luogo non usano la parola 'lista' per la tua variabile. Ombre la parola chiave list.

Il modo migliore è quello di fare in sede utilizzando tranciati, notare la [:] denota una giunzione:

>>> _list=[1,2,3] 
>>> _list[:]=[i+1 for i in _list] 
>>> _list 
[2, 3, 4] 
+2

Ciò è utile per modificare l'elenco esistente, ma ne produce ancora uno nuovo. È in qualche modo pericoloso usare un generatore per evitare la creazione di liste non necessarie? I.e, '_list [:] = (i + 1 per i in _list)'. – Alan

+0

@Alan buon punto - dovrebbe usare il generatore –

6
>>> [x.__add__(1) for x in [1, 3, 5]] 
3: [2, 4, 6] 

La mia intenzione è quella di esporre se l'elemento della lista è un numero intero che supporta varie funzioni integrate.

+1

Un buon promemoria per noi perso nella comprensione della lista magica. – npit

3

se si desidera utilizzare NumPy c'è un altro metodo come segue

import numpy as np 
list1 = [1,2,3] 
list1 = list(np.asarray(list1) + 1)