Elemente in einer Liste summieren


76

Hier ist mein Code, ich muss eine undefinierte Anzahl von Elementen in der Liste summieren. Wie macht man das?

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

Meine Eingabe: 3 5 4 9 Nach der Eingabe lösche ich das erste Element über l.pop(0). Nachdem .split(' ')meine Liste ist ['5', '4', '9']und ich alle Elemente in dieser Liste summieren muss.

In diesem Fall beträgt die Summe 18. Bitte beachten Sie, dass die Anzahl der Elemente nicht definiert ist.


@ JakobBowyer Ich muss den ersten Eintrag löschen
treng

2
@AshwiniChaudhary ist das nicht offensichtlich? ist eine Zeichenfolge ... er hat raw_input ()
KurzedMetal

Beantwortet das deine Frage? Summiere eine Liste von Zahlen in Python
AMC

Antworten:


171

Sie können Zahlen in einer Liste einfach mit der integrierten Summe () summieren :

sum(your_list)

Es werden so viele Zahlen wie möglich summiert. Beispiel:

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

sum(my_list)
91

Für Ihren speziellen Fall :

Konvertieren Sie für Ihre Daten zuerst die Zahlen in intund summieren Sie dann die Zahlen:

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

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

Dies funktioniert für eine undefinierte Anzahl von Elementen in Ihrer Liste (solange es sich um "Zahlen" handelt).

Vielen Dank für den Kommentar von @ senderle zur erneuten Konvertierung, falls die Daten im Zeichenfolgenformat vorliegen.


Vielen Dank für die Lösung einschließlich der Umwandlung in Ganzzahlen. Bei mir funktioniert dies nur, wenn ich in Daten Klammern [] um int (i) für i setze. Ist das normal?
Aki

Ja, das ist normal. Levon vergaß die Klammern.
Nicolas Göddel

8
>>> 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

6

Python iterable kann so summiert werden - [sum(range(10)[1:])]. Dies summiert alle Elemente aus der Liste mit Ausnahme des ersten Elements.

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

5

Sie können auch die Reduzierungsmethode verwenden:

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

Darüber hinaus können Sie die Lambda-Funktion ändern, um andere Vorgänge in Ihrer Liste auszuführen.


Die reduceauf Python3 zum Basismodul entfernte Funktion wird aufgerufen functools. src: docs.python.org/3/library/functools.html#functools.reduce
YanivGK

2

Sie können sumdie Elemente einer Liste summieren. Wenn Ihre Liste jedoch stammt raw_input, möchten Sie die Elemente wahrscheinlich in intoder floatzuerst konvertieren :

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

1

Sie können die mapeingebaute sum()Funktion von Funktion und Python verwenden. Es vereinfacht die Lösung. Und reduziert die Komplexität.
a=map(int,raw_input().split())
sum(a)
Erledigt!


0
def sumoflist(l):    
    total = 0    
    for i in l:
        total +=i
    return total
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.