Se ho list=[1,2,3]
e voglio aggiungere 1
a ciascun elemento per ottenere l'output [2,3,4]
, come farei?Come aggiungere un numero intero a ciascun elemento in una lista?
suppongo che avrei usato un ciclo for, ma non sono sicuro esattamente come.
Se ho list=[1,2,3]
e voglio aggiungere 1
a ciascun elemento per ottenere l'output [2,3,4]
, come farei?Come aggiungere un numero intero a ciascun elemento in una lista?
suppongo che avrei usato un ciclo for, ma non sono sicuro esattamente come.
new_list = [x+1 for x in my_list]
>>> mylist = [1,2,3]
>>> [x+1 for x in mylist]
[2, 3, 4]
>>>
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]
'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. –
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]
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]
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
@Alan buon punto - dovrebbe usare il generatore –
>>> [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.
Un buon promemoria per noi perso nella comprensione della lista magica. – npit
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)
Perché non 'per l'e in LST: e + = 1' lavorare? –
Questo discorso lo spiega: fatti e miti circa Python Nomi e Valori: http://nedbatchelder.com/text/names1.html –
√ informazioni impressionante. Aprire gli occhi. –