Frage 1: Sie wollen also (Element 0 + Element 1) / 2, (Element 1 + Element 2) / 2, ... usw.
Wir erstellen zwei Listen: eine mit allen Elementen außer dem ersten und eine mit allen Elementen außer dem letzten. Die gewünschten Durchschnittswerte sind dann die Durchschnittswerte jedes Paares aus den beiden Listen. Wir verwenden zip
um Paare aus zwei Listen zu nehmen.
Ich nehme an, dass Sie Dezimalzahlen im Ergebnis sehen wollen, obwohl Ihre Eingabewerte ganze Zahlen sind. Standardmäßig führt Python eine ganzzahlige Division durch: Der Rest wird verworfen. Um ganz durchzuteilen, müssen wir Fließkommazahlen verwenden. Glücklicherweise ergibt die Division einer Ganzzahl durch eine Fließkommazahl eine Fließkommazahl, also verwenden wir einfach 2.0
für unseren Divisor anstelle von 2
.
So:
averages = [(x + y) / 2.0 for (x, y) in zip(my_list[:-1], my_list[1:])]
Frage 2:
Diese Verwendung von sum
sollte gut funktionieren. Das Folgende funktioniert:
a = range(10)
# [0,1,2,3,4,5,6,7,8,9]
b = sum(a)
print b
# Prints 45
Außerdem müssen Sie nicht bei jedem Schritt alles einer Variablen zuweisen. print sum(a)
funktioniert einwandfrei.
Sie müssen genauer beschreiben, was Sie geschrieben haben und warum es nicht funktioniert.