Python | Ziffern einer Zahl zerlegen

...komplette Frage anzeigen

1 Antwort

Du kannst eine Zahl in einen String umwandeln über die Funktion str.

Ein String kann in eine Liste konvertiert werden über list, dessen Inhalt sind die einzelnen Ziffern.

print(list(str(-123)))  # ['-', '1', '2', '3']

Die Klasse String erbt von Iterator, eine Instanz dessen lässt sich also auch in einer generischen Schleife verwenden um dessen Bestandteile durchzugehen.

print([i for i in str(-123)])   # ['-', '1', '2', '3']

Somit können die Ziffern weiter behandelt werden, wie z.B. in Zahlen umgewandelt werden, allerdings muss bei einer negativen Ursprungszahl das Minuszeichen ausgeschlossen werden.

print(['-' if i == '-' else int(i) for i in str(-123)]) # ['-', 1, 2, 3]

Dieses Filterverfahren lässt sich noch weiter verfeinern.

Ebenso kann auch einfach die Zahl in ihre 10er Reste zerlegen, um die aufwändige String-Konvertierung zu umgehen.

W00dp3ckr 05.02.2015, 23:51

Wobei zu bemerken ist, dass die aufwändige Stringkonvertierung genau die Reste berechnen wird ;-)

0
Youkakun 06.02.2015, 16:46
@W00dp3ckr

Sie macht noch weit mehr, denn sie behandelt auch den Fall der Fließkommazahlen, legt eine String-Instanz mit allen drum&dran an und prüft auf mögliche Fehler.

Eine unsichere, minimale Eigenimplementierung ist deutlich schneller, da allerdings die Sprache Python gewählt wurde, wird dem Fragesteller Performance ohnehin wenig interessieren.

0

Was möchtest Du wissen?