Wenn Sie Python-Version verwenden> = 3.4, dann das Statistikmodul
from statistics import mean
importieren, wenn niedrigere Versionen verwenden, erstellen Sie eine Funktion Mittelwert berechnen
def mean(array):
sum = 0
if (not(type(array) == list)):
print("there is some bad format in your input")
else:
for elements in array:
try:
sum = sum + float(elements)
except:
print("non numerical entry found")
average = (sum + 0.0)/len(array)
return average
eine Liste von Listen erstellen, zum Beispiel
myList = [[1,2,3],[4,5,6,7,8],[9,10],[11,12,13,14],[15,16,17,18,19,20,21,22],[23]]
Iterierte durch myList
for i, lists in enumerate(myList):
print(i, mean(lists))
Damit wird die Sequenz n und der Durchschnitt der n-ten Liste gedruckt.
Um besonders den Durchschnitt nur n-ten-Liste zu finden, erstellen Sie eine Funktion
def mean_nth(array, n):
if((type(n) == int) and n >= 1 and type(array) == list):
return mean(myList[n-1])
else:
print("there is some bad format of your input")
Beachten Sie, dass Index von Null beginnt, so zum Beispiel, wenn Sie für den Mittelwert der fünften Liste suchen, wird es im Index sein 4. Dies erklärt n-1 im Code.
und dann die Funktion aufrufen, beispielsweise
avg_5thList = mean_nth(myList, 5)
print(avg_5thList)
Ausführen des obigen Code auf myList Ausbeuten folgendes Ergebnis:
0 2.0
1 6.0
2 9.5
3 12.5
4 18.5
5 23.0
18.5
wo die ersten sechs Zeilen von der iterativen Schleife erzeugt werden, und Anzeige der Index der n-ten Listen- und Listenmittel. Die letzte Zeile (18.5) zeigt den Durchschnitt der 5. Liste als Ergebnis des Aufrufs mean_nth(myList, 5)
an.
Des Weiteren finden Sie eine Liste wie das Ihre,
a = [
[1, 2, 3],
[2, 3, 4],
[3, 4, 5, 6]
]
Lässt Sie sagen durchschnittlich ersten Elemente wollen, dh (1 + 2 + 3)/3 = 2 oder 2. Elemente, dh (2+ 3 + 4)/3 = 3, oder 4. Elemente wie 6/1 = 6, müssen Sie die Länge jeder Liste finden, damit Sie im n-ten Element in einer Liste existieren können oder nicht. Dazu müssen Sie zuerst Ihre Liste von Listen in der Reihenfolge der Länge von Listen anordnen.
Sie können entweder
1) zuerst die Hauptliste sortieren nach Größe der konstituierenden Listen iterativ, und dann die sortierte Liste durchgehen, um festzustellen, ob die konstituierenden Listen von ausreichender Länge sind
2) oder Sie können iterativ in die ursprüngliche Liste nach Länge der Konstituentenlisten schauen.
Rechnerisch zweite ist effizienter, so vorausgesetzt, dass Ihr fünfte Element bedeutet, 4. im Index (0, 1, 2, (ich kann auf jeden Fall mit der Arbeit aus einem schnelleren rekursiven Algorithmus bei Bedarf zurück) 3 , 4) oder n-te Element Mittel (n-1) -te Element, läßt damit gehen und eine Funktion
def find_nth_average(array, n):
if(not(type(n) == int and (int(n) >= 1))):
return "Bad input format for n"
else:
if (not(type(array) == list)):
return "Bad input format for main list"
else:
total = 0
count = 0
for i, elements in enumerate(array):
if(not(type(elements) == list)):
return("non list constituent found at location " + str(i+1))
else:
listLen = len(elements)
if(int(listLen) >= n):
try:
total = total + elements[n-1]
count = count + 1
except:
return ("non numerical entity found in constituent list " + str(i+1))
if(int(count) == 0):
return "No such n-element exists"
else:
average = float(total)/float(count)
return average
Nun erstellen kann diese Funktion auf Ihrer Liste ruft a
print(find_nth_average(a, 0))
print(find_nth_average(a, 1))
print(find_nth_average(a, 2))
print(find_nth_average(a, 3))
print(find_nth_average(a, 4))
print(find_nth_average(a, 5))
print(find_nth_average(a, 'q'))
print(find_nth_average(a, 2.3))
print(find_nth_average(5, 5))
Die entsprechenden Ergebnisse sind:
Bad input format for n
2.0
3.0
4.0
6.0
No such n-element exists
Bad input format for n
Bad input format for n
Bad input format for main list
Wenn Sie eine erratische Liste haben, wie
a = [[1, 2, 3], 2, [3, 4, 5, 6]]
, die eine nicht enthält - Listenelement, erhalten Sie eine Ausgabe erhalten:
non list constituent found at location 2
Wenn Ihr Bestandteilliste ist unregelmäßig, wie:
a = [[1, 'p', 3], [2, 3, 4], [3, 4, 5, 6]]
, die eine nicht enthält - numerische Entität in einer Liste, und der Durchschnitt der zweiten Elemente von print(find_nth_average(a, 2))
Sie erhalten eine Ausgabe finden:
non numerical entity found in constituent list 1
Genau das, was ich gesucht habe! Vielen Dank :) –
@LaurensJansma, kein Problem, Sie sind willkommen. –