Einzelne Ziffern in Listen

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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Nur mal so eine Lösung ohne Zeichenkette:

Code: Alles auswählen

import math
nr = 494789823 # Beispiel
nrliste = [(nr/10**k)%10 for k in range(int(math.log(nr,10)+1))][::-1]
BlackJack

Versuch das mal mit ``nr = 0``. :P

Ohne den Umweg über `str()` würde ich wahrscheinlich eine Funktion schreiben, die mit `divmod()` solange Ziffern ausrechnet, bis der Rest 0 ist.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Ohne den Umweg über `str()` würde ich wahrscheinlich eine Funktion schreiben, die mit `divmod()` solange Ziffern ausrechnet, bis der Rest 0 ist.
So (ähnlich) würde ich es bei einem anständigen Programm auch machen. Ich hatte mir aber als Ziel gesetzt, es mit List Comprehension in einer Zeile zu schaffen - das hat dann ja auch geklappt.
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main

Eine noch bessere Lösung ist:

Code: Alles auswählen

nummer=raw_input('deine Kontonummer: ')
liste=list(nummer)

:P

Sowas muss man doch als Pythomatiker wissen! *g*


Viele Grüße Markus :-)
BlackJack

Der Ausgang war eine Zahl und keine Zeichenkette und das Ergebnis sollte eine Liste mit Zahlen sein und keine Liste mit Zeichenketten.
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main

Ok, dann entschuldigung:

Code: Alles auswählen

nummer=1234
liste=list(str(nummer))
Jetzt ist es eine Zahl...


Dass die Elemente der Liste integers sein sollen habe ich nicht bemerkt, ist aber auch nicht weiter schlimm, denn spätestens beim verarbeiten der Liste kann man einfach konvertieren, ist ja kein Akt.
Man kann es aber auch anders machen, gebe ich ja zu..

Viele Grüße
Markus :-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Markus12 hat geschrieben:Ok, dann entschuldigung:

Code: Alles auswählen

nummer=1234
liste=list(str(nummer))
Jetzt ist es eine Zahl...
Ähm... nein? Es sind immer noch eine Liste mit Zeichenketten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main

Ähm... ja und das ist mir ja auch klar! Warum liest du denn nicht einfach meinen Beitrag?
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main

Ich meinte damit, dass jetzt die Eingabe "eine Zahl ist".
dass die Ausgabe weiterhin eine Liste mit Elementen ist, die Strings sind, ist mir bewusst. Aber wie schon gesagt, einfach konvertieren, wenn man die Listenelemente weiterverarbeitet. Denn ich glaube nicht, dass die Liste gebraucht wird, um sie so auszugeben ;) wahrscheinlich will sie die Liste auf etwas überprüfen oder soetwas in der Art..
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Markus12 hat geschrieben:Ich meinte damit, dass jetzt die Eingabe "eine Zahl ist".
dass die Ausgabe weiterhin eine Liste mit Elementen ist, die Strings sind, ist mir bewusst. Aber wie schon gesagt, einfach konvertieren, wenn man die Listenelemente weiterverarbeitet. Denn ich glaube nicht, dass die Liste gebraucht wird, um sie so auszugeben ;) wahrscheinlich will sie die Liste auf etwas überprüfen oder soetwas in der Art..
Weil es einfacher ist die Struktur sofort richtig herzustellen, statt erstmal Strings zu haben und sie dann irgendwo herumzukonvertieren (oder es zu vergessen und dann im unpassendsten Moment auf die Nase zu fliegen).

Code: Alles auswählen

ziffern = [int(ziffer) for ziffer in str(zahl)]
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Leonidas hat geschrieben:

Code: Alles auswählen

ziffern = [int(ziffer) for ziffer in str(zahl)]
Genau an dem Punkt waren wir schon bei Posting Nr. 4 ....
Mir scheint, die Sache ist jetzt ausreichend breitgetreten worden.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

pütone hat geschrieben:Genau an dem Punkt waren wir schon bei Posting Nr. 4 ....
Ehh, tatsächlich :oops: Naja, immerhin habe ich bewiesen, dass ich sehr vergesslich bin und dass es in Python nur einen Weg gibt, das Problem zu lösen :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Genau, den in Posting Nr. 6 :P
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wenn wir den Thread noch weiterausdehnen, werdet ihr auf Seite drei wieder diese Lösung vorschlagen :-D
Larry
User
Beiträge: 1
Registriert: Samstag 27. Oktober 2018, 16:57

Hallo, ich habe versucht das gleiche zu machen, um die Liste die ich bekomme editieren zu können... nur jetzt habe ich das Problem, die Liste nicht mehr zur Zahl machen zu können. Hat jemand eine Ahnung wie das gehen könnte?
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Da wir uns ja im Dezimalsystem befinden, musst du nur jede zahl mit der 10er-Potenz ihrer Stelle multiplizieren, und das ganze summiere:

Code: Alles auswählen

sum((n * 10**i) for i, n in enumerate(reversed([1, 2, 3])))
Antworten