2012-07-05 20 views
39

Ecco il mio codice, ho bisogno di sommare un numero indefinito di elementi nella lista. Come fare questo?Sommare gli elementi in una lista

l = raw_input() 
l = l.split(' ') 
l.pop(0) 

mio ingresso: 3 5 4 9 Dopo ingresso cancello primo elemento via l.pop(0). Dopo il .split(' ') la mia lista è ['5', '4', '9'] e ho bisogno di sommare tutti gli elementi in questa lista.

In questo caso la somma è 18. Si noti che il numero di elementi non è definito.

+2

Perché il 'l.pop (0)'? –

+0

qual è il tuo input? –

+0

@JakobBowyer Devo cancellare la prima voce – treng

risposta

103

è possibile sommare i numeri in un elenco semplicemente con il sum() built-in:

sum(your_list) 

Sarà riassumere come molti elementi numerici come si deve. Esempio:

my_list = range(10, 17) 
my_list 
[10, 11, 12, 13, 14, 15, 16] 

sum(my_list) 
91 

Per il vostro caso specifico:

Per i vostri dati di convertire i numeri in int prima e poi sommare i numeri:

data = ['5', '4', '9'] 

sum(int(i) for i in data) 
18 

Questo lavoro per indefinita numero di elementi nella tua lista (purché siano "numeri")

Grazie per la conversione del commento di @ senderle nel caso in cui i dati siano in formato stringa.

+0

Grazie per la soluzione che include la trasformazione in interi, Per me funziona solo quando inserisco parentesi [] attorno a int (i) per i nei dati. È normale? – Aki

4

Python iterable può essere sommato in questo modo - [sum(range(10)[1:])]. Questo somma tutti gli elementi della lista tranne il primo elemento.

>>> atuple = (1,2,3,4,5) 
>>> sum(atuple) 
15 
>>> alist = [1,2,3,4,5] 
>>> sum(alist) 
15 
2

È possibile utilizzare sum per riassumere gli elementi di una lista, se la vostra lista proviene da raw_input, probabilmente desidera convertire gli elementi per int o float prima:

l = raw_input().split(' ') 
sum(map(int, l)) 
6
>>> l = raw_input() 
1 2 3 4 5 6 7 8 9 10 
>>> l = l.split() 
>>> l.pop(0) 
'1' 
>>> sum(map(int, l)) #or simply sum(int(x) for x in l) , you've to convert the elements to integer first, before applying sum() 
54 
1

È possibile utilizzare la funzione map e i pitoni incorporati nella funzione sum(). Semplifica la soluzione. E riduce la complessità.
a=map(int,raw_input().split())
sum(a)
Fatto!

Problemi correlati