Schleife durchlaufen lassen und Wert als Index für Liste verwenden!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
JesusIsMyLord
User
Beiträge: 12
Registriert: Mittwoch 24. Oktober 2018, 16:17

Hallo zusammen,
ich stelle vermutlich eine sehr einfach Frage, aber nicht weil ich keine Tutorials gemacht habe oder nicht selber recherchiert habe (habe beides sehr ausführlich getan und auch schon etliche funktionierende Programme geschrieben), sondern weil ich einen Knoten im Hirn hab und nochmals Hilfe beim Verständnis benötige. Mein Code ist wesentlich länger und komplexer, ich hab dies allerdings zum Verständnis auf ein einfaches Beispiel runter gebrochen:
Ich lasse eine Schleife durchlaufen und verwende den durchlaufenden Parameter als Index für eine Schleife:

Code: Alles auswählen

werte=[]
for i in range(10):
	a, b = b, a+b
	zusatz=[]
	zusatz.append(i)
	werte.append(zusatz)
	werte[i].append(a)
print(werte)
Ich lass eine Schleife durchlaufen und gebe mir eben die ersten Werte der Fibonacci-Reihe in Liste, die ich so formatiert habe, dass ich immer eine Unterliste mit dem Wert der Schleife (wie oft sie durchgelaufen ist) und dem Fibonacci-Wert habe.
Das kann man sicher eleganter lösen, ist mir klar, aber es geht mir um das Prinzip meines Problems....Wichtig ist auch, dass die Formatierung der Liste gleich bleibt...ob es ne Liste oder ein np.array ist, spielt für mich bis dahin keine Rolle, hab beides probiert, löste aber nicht das Problem:

Code: Alles auswählen

i=1
z=10
werte=[]#oder werte=list()
while i <= z:
	hoehe=i*2
	zusatz=[]
	zusatz.append(i)
	werte.append(zusatz)
	werte[i].append(hoehe)
	i=i+1
print(werte)
Hab ich nämlich einen Wert bekommen (in diesem Fall z) und lasse das Thema dann über eine While-Schleife laufen, kommt die Fehlermeldung, dass er den Index nicht hat....Prinzipiell kann das nicht schwierig sein und ich will verstehen, warum der zweite Code nicht funktioniert. Ich muss irgendetwas übersehen....beide Zahlen (i und z) sind Integer, das ist festgestellt und überprüft...
Ist meine Frage/mein Problem verständlich formuliert?
Ich bitte um Verzeihung für dieses wirklich simple Thema aber stehe grade echt auf dem Schlauch!
Viele Grüße
Benutzeravatar
__blackjack__
User
Beiträge: 14032
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@JesusIsMyLord: Es ist alles schon arg umständlich formuliert, aber warum Du beim zweiten Code einen `IndexError` bekommst, sollte doch eigentlich offensichtlich sein: Werte fängt als leere Liste an. Dann fügst Du im ersten Schleifendurchlauf ein Element hinzu. Und versuchst dann mit ``werte[i]`` auf einen Index zuzugreifen den es nicht gibt. `i` wurde vor der Schleife ja mit 1 initialisiert. Und am Index 1 gibt es kein Element. Das ist am Index 0.

Letztlich ist das was Du da machst aber auch höllisch undurchsichtig und kompliziert ausgedrückt. Und da sagst Du auch noch das das eine vereinfachte Variante von dem ist was Du tatsächlich machst…
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Antworten