86 votes

Addition d'éléments dans une liste

Voici mon code, j'ai besoin de faire la somme d'un nombre indéfini d'éléments dans la liste. Comment faire?

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

Mon entrée : 3 5 4 9 Après l'entrée, je supprime le premier élément via l.pop(0). Après .split(' ') ma liste est ['5', '4', '9'] et je dois faire la somme de tous les éléments de cette liste.

Dans ce cas, la somme est de 18. Veuillez noter que le nombre d'éléments n'est pas défini.

193voto

Levon Points 34085

Vous pouvez additionner des nombres dans une liste simplement avec le sum() intégré :

sum(votre_liste)

Il additionnera autant d'éléments numériques que vous avez. Exemple :

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

sum(ma_liste)
91

Pour votre cas spécifique :

Pour vos données, convertissez d'abord les nombres en int puis additionnez les nombres :

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

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

Cela fonctionnera pour un nombre indéfini d'éléments dans votre liste (tant qu'ils sont des "nombres")

Merci au commentaire de @senderle concernant la conversion en cas où les données sont au format chaîne de caractères.

8voto

Ashwini Chaudhary Points 94431
>>> l = raw_input()
1 2 3 4 5 6 7 8 9 10
>>> l = l.split()
>>> l.pop(0)
'1'
>>> sum(map(int, l)) #ou simplement sum(int(x) pour x dans l), vous devez d'abord convertir les éléments en entiers avant d'appliquer la somme()
54

7voto

Srikar Appal Points 26892

Les itérables Python peuvent être additionnés comme ceci - [sum(range(10)[1:])] . Cela additionne tous les éléments de la liste sauf le premier élément.

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

5voto

Chappleton Points 114

Vous pouvez également utiliser la méthode reduce:

>>> myList = [3, 5, 4, 9]
>>> myTotal = reduce(lambda x,y: x+y, myList)
>>> myTotal
21

De plus, vous pouvez modifier la fonction lambda pour effectuer d'autres opérations sur votre liste.

2voto

unkulunkulu Points 5066

Vous pouvez utiliser sum pour additionner les éléments d'une liste, cependant si votre liste provient de raw_input, vous voudrez probablement convertir les éléments en int ou en float d'abord :

l = raw_input().split(' ')
sum(map(int, l))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X