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)
. Nach .split(' ')
lautet meine Liste ['5', '4', '9']
und ich muss alle Elemente in dieser Liste summieren.
In diesem Fall ist die Summe 18. Bitte beachten Sie, dass die Anzahl der Elemente nicht definiert ist.
Sie können Zahlen in einer Liste einfach mit dem integrierten sum () summieren:
sum(your_list)
Es werden so viele Elemente addiert, wie Sie haben. Beispiel:
my_list = range(10, 17)
my_list
[10, 11, 12, 13, 14, 15, 16]
sum(my_list)
91
Für Ihren speziellen Fall:
Für Ihre Daten konvertieren Sie zuerst die Zahlen in int
und summieren Sie dann die Zahlen:
data = ['5', '4', '9']
sum(int(i) for i in data)
18
Dies funktioniert für undefined Anzahl der Elemente in Ihrer Liste (solange es sich um "Zahlen" handelt)
Vielen Dank für die erneute Konvertierung des Kommentars von @ senderle, falls die Daten im String-Format vorliegen.
>>> 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 kann wie folgt summiert werden - [sum(range(10)[1:])]
. Dies summiert alle Elemente mit Ausnahme des ersten Elements aus der Liste.
>>> atuple = (1,2,3,4,5)
>>> sum(atuple)
15
>>> alist = [1,2,3,4,5]
>>> sum(alist)
15
Sie können sum
verwenden, um die Elemente einer Liste zusammenzufassen. Wenn Ihre Liste jedoch aus raw_input
stammt, möchten Sie die Elemente wahrscheinlich zuerst in int
oder float
konvertieren:
l = raw_input().split(' ')
sum(map(int, l))
Sie können die Funktion map
und die in sum()
eingebauten Pythons verwenden. Es vereinfacht die Lösung. Und reduziert die Komplexität.a=map(int,raw_input().split())
sum(a)
Getan!
Sie können auch die reduzierte Methode verwenden:
>>> myList = [3, 5, 4, 9]
>>> myTotal = reduce(lambda x,y: x+y, myList)
>>> myTotal
21
Außerdem können Sie die Lambda-Funktion ändern, um andere Operationen auf Ihrer Liste auszuführen.
def sumoflist(l):
total = 0
for i in l:
total +=i
return total