Seite 1 von 1
					
				IndexError: list assignment index out of range
				Verfasst: Montag 10. März 2008, 20:32
				von kurvenschubser
				Guten Tag!
Könnt ihr mir nen Tip geben warum das nicht funktioniert?
Code: Alles auswählen
anteile = []
kumulanteile = []
for n in range(1, 11, 1):
    anteile[n-1] = 0
    kumulanteile[n-1] = 0
 
Traceback (most recent call last):
  File "test2.py", line 7, in <module>
    anteile[n-1] = 0
IndexError: list assignment index out of range
MfG
 
			 
			
					
				
				Verfasst: Montag 10. März 2008, 20:33
				von Leonidas
				Weil du auf einen Indexwert zugreifst den es nicht gibt?!
Was willst du denn eigentlich machen?
			 
			
					
				
				Verfasst: Montag 10. März 2008, 20:42
				von kurvenschubser
				Ich möchte die Listen mit Nullen füllen. Dann sollen in den entsprechenden  Positionen der Wert per Schleife um jeweils einen gewissen Wert erhöht werden (float). Das Resultat sollte so aussehen
Code: Alles auswählen
Note:    Anteil:     Kummulierter Anteil:
1.0        0.123       0.123
1.3        0.2           0.323
  .                               .               .
  .                               .               .
  .                               .               .
5.0                              .             1.0
EDIT: Sieht bischen merkwürdig aus, die Werte sollten jeweils unter den Überschriften stehen...
 
			 
			
					
				Re: IndexError: list assignment index out of range
				Verfasst: Montag 10. März 2008, 20:49
				von Hyperion
				Ähem ... so wird das aber nix 

Wenns nur ums Auffüllen geht ...
Allerdings erscheint mir Deine Struktur nicht wirklich geeignet! (Oder bekommst Du die Listen irgend wo her?)
 
			 
			
					
				
				Verfasst: Montag 10. März 2008, 20:53
				von Leonidas
				Code: Alles auswählen
noten = [1.0, 1.3, 5.0]
anteile = [0.123, 0.2, 0]
kumuliert = [noten +  anteil for note, anteil in zip(noten, anteile)]
# oder anders
kumuliert = map(sum, zip(noten, anteile))
 
			 
			
					
				
				Verfasst: Montag 10. März 2008, 21:04
				von kurvenschubser
				Die Werte (außer den Noten) waren  als Beispiel gedacht.
Ich habe eine Liste mit der Häufigkeit der Noten.
In anteile soll stehen:
häufigkeit von note geteilt durch Gesamtanzahl der Noten. 
In kumulanteile soll dann stehn: 
kumulanteile = kumulanteile[i-1] + anteile
Ich werde erst mal mit Hyperions Tip weitermachen...
MfG
			 
			
					
				Wg. auffüllen  mit Nullen
				Verfasst: Donnerstag 13. März 2008, 20:29
				von kurvenschubser
				Es ist doch so, dass man explizit mit Nullen füllen muss oder? Sonst würde in so einer Liste automatisch von python ein zufälliger Wert gesetzt werden?
EDIT: Zur Erläuterung:
Code: Alles auswählen
anteile = [0]*11
for y in range(1, 12, 1):
    anteile[y-1] = float(notenliste[y]) / teilnehmernr
In notenliste[] stehen pro Note (es gibt 11: 1,0 1,3 1,7 2,0...5,0) die Anzahl derjenigen die diese Note erreicht haben. teilnehmernr ist die Anzahl der Klausurteilnehmer.
 
			 
			
					
				
				Verfasst: Donnerstag 13. März 2008, 21:48
				von BlackJack
				Nein, es wird kein zufälliger Wert gesetzt.  Das wäre ja noch schöner.  Es gibt einen `IndexError` wenn man auf ein Element zugreifen will, dass es nicht gibt.
Deine Erläuterung lässt böses ahnen.  Bitte fang an Python zu programmieren und höre auf BASIC, Pascal oder wo auch immer Du diese Angewohnheiten her hast, in Python schreiben zu wollen.  ``for y in range(len(notenliste))`` wäre ja schon schlechter Stil, aber die Zahlen hart zu kodieren und dann auch noch unnötigerweise um 1 nach oben verschoben, ist echt gruselig.
Code: Alles auswählen
anteile = [float(n) / teilnehmer_anzahl for n in notenliste]