enumarate

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
Bykl
User
Beiträge: 92
Registriert: Donnerstag 5. Oktober 2017, 17:57

Code: Alles auswählen

code=[0, 1, 0,1,1]
for t,i in enumerate(code):
    print(t,i,code[i],code[t])
Ausdruck:
0 0 0 0
1 1 1 1
2 0 0 0
3 1 1 1
4 1 1 1

Frage: Warum ist i, "code", code[t] dasselbe? Ihr seht hier nur das Wort "code". ich meine aber codeEckigeKlammerauf i eckigeKlammerzu. Das Wort verändert diese Oberfläche seltsamerweise, obwohl ich mit Anführungszeichen das zu verhindern suche...
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

In code[0] steht 0 und in code[1] steht 1, daher ist es egal ob Du 1 oder code[1] schreibst, gibt beides 1.
Bei

Code: Alles auswählen

code = [1, 0, 0,1,1]
for t,i in enumerate(code):
    print(t, i, code[i], code[t])
bekommst Du das verdrehte Muster:

Code: Alles auswählen

0 1 0 1
1 0 1 0
2 0 1 0
3 1 0 1
4 1 0 1
Und bei

Code: Alles auswählen

code = ['-', '+', '-','+','+']
for t,i in enumerate(code):
    print(t, i, code[i], code[t])
bekommst Du einen TypeError, der Dir deutlich machen sollte, dass code[ i ] zu schreiben, keine sinnvolle Idee war.
Benutzeravatar
__blackjack__
User
Beiträge: 13071
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Bykl: Warum denkst Du das sollte nicht die gleichen Werte haben?

Ich glaube ich habe schon mal was zum Thema „Namen“ gesagt. Du verwendest hier den Namen `i`, der sehr oft als Namen für den *Index* verwendet wird, für den *Wert*. Und den *Index* nennst Du `t`. Warum auch immer `t`. Es wäre besser die Dinge beim Namen zu nennen. Selbst wenn es nur so generische Namen wie `index` und `value` sind, statt kryptischer Namen wie `t` und `i`. Wobei `i` wie gesagt zusätzlich noch eine falsche Assoziation beim Leser wecken kann.

Code: Alles auswählen

code = [0, 1, 0, 1, 1]
for index, value in enumerate(code):
    print(index, value, code[value], code[index])
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Bykl
User
Beiträge: 92
Registriert: Donnerstag 5. Oktober 2017, 17:57

Danke, Blackjack, das ist ein guter Verdeutlichungstrick!

und wenn ich jetzt so mache: code[index+2] einfüge, also die indexaddition ..

Code: Alles auswählen

code=[1, 0, 0,1,1]
for index,value in enumerate(code):
    print(index,value,code[index],code[value],code[index+2])


funktioniert die IdexAddition auch, solange der Index existiert, wenn er nicht mehr existiert, gibt es: list index out of range

siehe: Ausdruck
0 1 1 0 0
1 0 0 1 1
2 0 0 1 1
IndexError: list index out of range
Antworten