Voici mon code, je dois résumer un nombre indéfini d'éléments dans la liste. Comment faire ça?
l = raw_input()
l = l.split(' ')
l.pop(0)
Ma saisie: 3 5 4 9
Après saisie, 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 18. Veuillez noter que le nombre d'éléments n'est pas défini.
Vous pouvez additionner des nombres dans une liste simplement avec le sum () intégré:
sum(your_list)
Il va résumer autant de nombres que vous avez. Exemple:
my_list = range(10, 17)
my_list
[10, 11, 12, 13, 14, 15, 16]
sum(my_list)
91
Pour votre cas particulier:
Pour vos données, convertissez d’abord les nombres en int
, puis additionnez les nombres:
data = ['5', '4', '9']
sum(int(i) for i in data)
18
Cela fonctionnera pour undefined nombre d'éléments dans votre liste (tant qu'ils sont des "nombres")
Merci pour le commentaire de @ senderle concernant la conversion dans le cas où les données sont au format chaîne.
>>> 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
Python iterable peut être résumé comme suit - [sum(range(10)[1:])]
. Ceci 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
Vous pouvez utiliser sum
pour additionner les éléments d'une liste. Toutefois, si votre liste provient de raw_input
, vous souhaiterez probablement convertir les éléments en int
ou float
l = raw_input().split(' ')
sum(map(int, l))
Vous pouvez également utiliser la méthode de réduction:
>>> 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.
def sumoflist(l):
total = 0
for i in l:
total +=i
return total