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.

treng
quelle
@ 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.

Levon
quelle
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
Ashwini Chaudhary
quelle
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
Srikar Appalaraju
quelle
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.

Chappleton
quelle
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))
unkulunkulu
quelle
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!

Shreyaa Sridhar
quelle
0
def sumoflist(l):    
    total = 0    
    for i in l:
        total +=i
    return total
niksy
quelle