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.
Antworten:
Sie können Zahlen in einer Liste einfach mit der integrierten Summe () summieren :
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
int
und 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.
quelle
>>> 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
quelle
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
quelle
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.
quelle
reduce
auf Python3 zum Basismodul entfernte Funktion wird aufgerufenfunctools
. src: docs.python.org/3/library/functools.html#functools.reduceSie können
sum
die Elemente einer Liste summieren. Wenn Ihre Liste jedoch stammtraw_input
, möchten Sie die Elemente wahrscheinlich inint
oderfloat
zuerst konvertieren :l = raw_input().split(' ') sum(map(int, l))
quelle
Sie können die
map
eingebautesum()
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!
quelle
def sumoflist(l): total = 0 for i in l: total +=i return total
quelle