2012-07-05 16 views
39

Aquí está mi código, necesito sumar un número indefinido de elementos en la lista. ¿Como hacer esto?Sumando elementos en una lista

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

Mi entrada: 3 5 4 9 Después de entrada elimino primer elemento a través de l.pop(0). Después de .split(' ') mi lista es ['5', '4', '9'] y necesito sumar todos los elementos en esta lista.

En este caso, la suma es 18. Tenga en cuenta que la cantidad de elementos no está definida.

+2

¿Por qué 'l.pop (0)'? –

+0

¿cuál es su opinión? –

+0

@JakobBowyer Necesito eliminar la primera entrada – treng

Respuesta

103

Puede resumir números de una lista simplemente con el sum() incorporada:

sum(your_list) 

Será resumir tantos artículos de número que usted tiene. Ejemplo:

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

sum(my_list) 
91 

para su caso específico:

para sus datos convertir los números en int primero y después sumar los números:

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

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

Esto funcionará para indefinido número de elementos en su lista (siempre que sean "números")

Gracias por el comentario de @ senderle sobre la conversión en caso de que los datos estén en formato de cadena.

+0

Gracias por la solución que incluye la transformación a enteros, para mí solo funciona cuando pongo los paréntesis [] alrededor de int (i) para i en los datos. ¿Esto es normal? – Aki

4

Python iterable se puede resumir como so - [sum(range(10)[1:])]. Esto suma todos los elementos de la lista excepto el primer elemento.

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

Puede utilizar sum para resumir los elementos de una lista, sin embargo si la lista está viniendo de raw_input, es probable que desee convertir los elementos para int o float primera:

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

Puede usar la función map y las pitones incorporadas en la función sum(). Simplifica la solución. Y reduce la complejidad.
a=map(int,raw_input().split())
sum(a)
¡Hecho!