Seite 1 von 1

enumarate

Verfasst: Dienstag 22. November 2022, 10:07
von Bykl

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...

Re: enumarate

Verfasst: Dienstag 22. November 2022, 10:29
von Sirius3
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.

Re: enumarate

Verfasst: Dienstag 22. November 2022, 10:29
von __blackjack__
@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])

Re: enumarate

Verfasst: Dienstag 22. November 2022, 10:59
von Bykl
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