Seite 1 von 1
Wert verändert sich nach append
Verfasst: Mittwoch 5. Oktober 2016, 11:01
von dennbas
Hallo zusammen,
sobald ich einen Wert in einer Liste hinzufüge, verändert sich der und ich verstehe nicht wieso ?
Code: Alles auswählen
value = (shXLSBearbeitungsstatus_KON.cell_value(rowx=k, colx=0))
valuei = int(shXLSBearbeitungsstatus_KON.cell_value(rowx=k, colx=0))
KontaktListe.append(valuei)
Nach dem ersten Durchlauf sehen die Variablen so aus:
value = 2.02150300000e+12
valuei = 2021503000005
KontaktListe = [2021503000005L]
Woher kommt nun in der Liste das große L am Ende ?
Im Voraus vielen Dank für alle Antworten.
LG Dennbas
Re: Wert verändert sich nach append
Verfasst: Mittwoch 5. Oktober 2016, 11:15
von BlackJack
@dennbas: Der Wert verändert sich nicht, nur die Darstellung. Die Elemente in einer Liste werden in ihrer `repr()`-Darstellung gezeigt, Du erwartest aber die `str()`-Darstellung:
Code: Alles auswählen
In [2]: str(2021503000005)
Out[2]: '2021503000005'
In [3]: repr(2021503000005)
Out[3]: '2021503000005L'
In [4]: type(2021503000005)
Out[4]: long
Werte vom Typ `long` haben am Ende ihrer `repr()`-Darstellung ein 'L' stehen.
Re: Wert verändert sich nach append
Verfasst: Mittwoch 5. Oktober 2016, 11:23
von dennbas
Vielen Dank für deine Antwort, wenn ich nun aber nach 2021503000005 in der Liste suche, erhalte ich keinen Treffer , wie kann das dann sein ?
ein
bestätigt aber deine Aussage
Re: Wert verändert sich nach append
Verfasst: Mittwoch 5. Oktober 2016, 11:25
von dennbas
ein
Code: Alles auswählen
str(int(shXLSBearbeitungsstatus_KON.cell_value(rowx=k, colx=0))))
konnte das Problem lösen, ganz verstanden habe ich es aber noch nicht dass er vorher nicht richtig gematcht hat
Re: Wert verändert sich nach append
Verfasst: Mittwoch 5. Oktober 2016, 11:57
von BlackJack
@dennbas: Wenn die Umwandlung in eine Zeichenkette das Problem lösen konnte dann suchst Du nach einer Zeichenkette und nicht nach einer Zahl, also nach '2021503000005' und nicht nach 2021503000005. Falls die Liste von der Programmlogik her Zahlen enthalten soll, dann wandelst Du den falschen Wert um. Dann sollte man eher die Zeichenkette nach der gesucht wird in eine Zahl wandeln.
Deine Namensgebung ist übrigens suboptimal. Die Namen enthalten kryptische Kürzel und anscheinend sowohl Prä- als auch Suffixe die den konkreten Typ des Wertes angeben. Das macht man nicht. Bei dem `sh`-Präfix kann man ein `_sheet` oder `_arbeitsblatt` (um nicht Deutsch und Englisch zu mischen) an den Namen anhängen, weil das nicht nur der konkrete Typ ist, sondern auch der ”Logische”, aber so etwas wie `i` für `int` oder `Liste` sollte man nicht machen. Bei Sequenztypen verwendet man üblicherweise die Mehrzahl. Also `Kontakte` statt `KontaktListe`. Wobei Namen für so ziemlich alles ausser Klassen und Konstanten konventionell auch klein_mit_unterstrichen geschrieben werden.