2016-06-10 11 views
-1

Ich wurde von einem Freund aufgefordert, ein einfaches Programm zu erstellen, das einen Benutzer auffordert, einen Maximalwert und dann eine Stichprobengröße (n) einzugeben. Es verwendet dann nur randint, um ein Histogramm in der Shell unter Verwendung von ASCII-Zeichen zu erstellen.Erstellen einer verschachtelten Liste, die auf bestimmte Bereiche verweist

Ich kann die Klassenbreite und -grenzen sehr einfach festlegen. Wo ich Probleme habe, ist es, einen Algorithmus zu verstehen und zu implementieren, der alle Zahlen, die in eine bestimmte Klasse fallen, an die zu druckende Histogrammliste anfügt. Zum Beispiel, wenn ich habe:

sample = [5, 1, 3, 9, 7, 13, 12, 5] 
class_boundaries = [(1, 4), (4, 7), (7, 10), (10, 14)] 
histogram = [] 

Ich muss nur eine Funktion machen, die die Abtastwerte in der Position anhängt, die sie in Bezug auf die Klassengrenzen gehören würde. So sollte beispielsweise das Histogramm [0] [1, 3] zurückgeben. Ich habe mein Bestes getan, um verschiedene Lösungen auszuprobieren und zu verstehen, wie For-Loop-Algorithmen oder Listen-Comprehensions funktionieren, aber eine praktische Erklärung zu meinem Problem wäre wirklich hilfreich, um besser zu verstehen, wie man programmiert. Vielen Dank im Voraus!

+0

Was ist Ihre erwartete Ausgabe? –

+0

Für das fertige Programm verwende ich len (Histogramm [i]), um ein Histogramm auszudrucken. Für dieses Beispiel ist das Ausdrucken der verschiedenen Listen in der Histogrammliste jedoch ideal, um das Problem zu verstehen. Also: Das Druckhistogramm [0] sollte zurückgeben [1, 3]. –

Antwort

1
sample = [5, 1, 3, 9, 7, 13, 12, 5] 
class_boundaries = [(1, 4), (4, 7), (7, 10), (10, 14)] 
classified = [[X for X in sample if LO <= X <= HI] for LO,HI in class_boundaries] 
counts = [sum(LO <= X <= HI for X in sample) for LO,HI in class_boundaries] 

Ergebnis: klassifiziert = [[1, 3], [5, 7, 5], [9, 7], [13, 12]], Zählungen = [2, 3, 2, 2]

Die Berechnung der Zählungen muss nicht klassifiziert werden. Wenn Sie also alles benötigen, überspringen Sie den klassifizierten Schritt.

+1

'Summe (LO <= X <= HI für X in Beispiel)' ist das gleiche wie Sie, wenn sonst –

+1

Danke - bearbeitet – user29970

+0

Vielen Dank! Es ist alles ziemlich selbsterklärend, aber ich hatte immer noch Schwierigkeiten, das Listenverständnis selbst zu schreiben und zu verstehen. –

Verwandte Themen