Ein Durchschnitt einer Sequenz ist sum(sequence)/len(sequence)
, also müssen Sie sowohl magnitudes
als auch measures
durchlaufen, diese Mittel berechnen (arithmetische Mittelwerte) und in einem Wörterbuch speichern.
Es gibt viel mehr pythonische Möglichkeiten, die Sie erreichen können. Alle diese Beispiele ergeben {'mag1': 2.0, 'mag2': 3.5, 'mag3': 5.0}
als Ergebnis.
Mit for i in range()
Schleife:
def exp(magnitudes, measures):
means = {}
for i in range(len(magnitudes)):
means[magnitudes[i]] = sum(measures[i])/len(measures[i])
return means
print(exp(['mag1', 'mag2', 'mag3'], [[1, 2, 3], [3, 4], [5]]))
Aber wenn Sie beide Indizes und Werte einer Liste benötigen, können Sie for i, val in enumerate(sequence)
Ansatz verwenden, die viel besser geeignet ist in diesem Fall:
def exp(magnitudes, measures):
means = {}
for i, mag in enumerate(magnitudes):
means[mag] = sum(measures[i])/len(measures[i])
return means
print(exp(['mag1', 'mag2', 'mag3'], [[1, 2, 3], [3, 4], [5]]))
Ein weiteres Problem versteckt hier: i
Index gehört zu magnitudes
aber wir bekommen auch Werte von measures
mit es, das ist keine große Sache in Ihrem Fall, wenn Sie magnitudes
undhabendie gleiche Länge, aber wenn magnitudes
größer sein wird, erhalten Sie eine IndexError
. So scheint es mir, wie die Verwendung von zip
Funktion ist, was wäre die beste Wahl hier (eigentlich wie von Python3.6 es nicht zwei Listen die gleiche Länge benötigen, wird es nur die Länge der kürzesten als die Länge von verwenden Ergebnis):
def exp(magnitudes, measures):
means = {}
for mag, mes in zip(magnitudes, measures):
means[mag] = sum(mes)/len(mes)
return means
print(exp(['mag1', 'mag2', 'mag3'], [[1, 2, 3], [3, 4], [5]]))
So fühlen sich frei um das Beispiel zu verwenden, die Ihre Anforderungen, von denen entsprechen, die Sie mögen und nicht vergessen docstring hinzuzufügen.
Wahrscheinlicher Sie nicht so pythonic Weg brauchen, aber es kann auch kürzer sein, wenn Wörterbuch Verständnis ins Spiel kommt:
def exp(magnitudes, measures):
return {mag: sum(mes)/len(mes) for mag, mes in zip(magnitudes, measures)}
print(exp(['mag1', 'mag2', 'mag3'], [[1, 2, 3], [3, 4], [5]]))