web-dev-qa-db-fra.com

Résumer des éléments dans une liste

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.

51
treng

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.

129
Levon
>>> 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
7
Ashwini Chaudhary

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
5
Srikar Appalaraju

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))
2
unkulunkulu

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.

0
Chappleton
def sumoflist(l):    
    total = 0    
    for i in l:
        total +=i
    return total
0
niksy