Alle Antworten zeigten einen programmatischen und allgemeinen Ansatz. Ich schlage einen mathematischen Ansatz speziell für Ihren Fall vor. Er kann vor allem bei langen Listen schneller sein. Es funktioniert, weil Ihre Liste eine Liste von natürlichen Zahlen bis zu n
:
Nehmen wir an, wir haben die natürlichen Zahlen 1, 2, 3, ..., 10
:
>>> nat_seq = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Sie können die sum
Funktion auf eine Liste:
>>> print sum(nat_seq)
55
Sie können auch die folgende Formel verwenden n*(n+1)/2
donde n
ist der Wert des letzten Elements in der Liste (hier: nat_seq[-1]
), so dass Sie eine Iteration über Elemente vermeiden:
>>> print (nat_seq[-1]*(nat_seq[-1]+1))/2
55
So erzeugen Sie die Sequenz (1+2)/2, (2+3)/2, ..., (9+10)/2
können Sie einen Generator und die folgende Formel verwenden (2*k-1)/2.
(beachten Sie den Punkt, der die Werte zu Fließkommazahlen macht). Bei der Erstellung der neuen Liste muss das erste Element übersprungen werden:
>>> new_seq = [(2*k-1)/2. for k in nat_seq[1:]]
>>> print new_seq
[1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5]
Auch hier können Sie die sum
Funktion auf dieser Liste:
>>> print sum(new_seq)
49.5
Sie können aber auch die folgende Formel verwenden (((n*2+1)/2)**2-1)/2
so dass Sie die Iteration über Elemente vermeiden können:
>>> print (((new_seq[-1]*2+1)/2)**2-1)/2
49.5