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.
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

Hallo an alle die mir helfen können^^
Ich habe das Problem, das ich gern eine lange Zahlenfolge (Kontonummer, etc...) als einzelne Ziffer in eine Liste geben würde. Will heißen:

Nummer: 623464357
Liste:[6,2,3,4,6,4,3,5,7]

Also genau die Zahl halt nur in einer Liste mit den einzelnen Ziffern.
Und bevor ich wieder von diversen Personen aufs Korn genommen werde:
Google bietet (was ich gefunden hab) nur Lösungen das er die einzelnen Zahlen in der richtigen mathematischen Reihenfolge ausgibt und alle nur einmal (also bei dem Beispiel oben [2,3,4,5,6,7]). Das ging mit dem befehl set().

Falls jemand Abhilfe weiß das wär toll.
BlackJack

Das einfachste dürfte der Umweg über eine Zeichenkette sein, also 1) in Zeichenkette umwandeln, 2) Zeichenkette in Liste mit Zeichen/Ziffern, und 3) die Ziffern wieder in Zahlen umwandeln.

(Ich verschieb's mal nach "Allgemein", da kein Tkinter in Sicht.)
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

ja entschuldigung ich habs falsch gepostet, mein Fehler.

also ganz einfach so?

Code: Alles auswählen

b=input('Zahl: ')
b=str(a)
c=frozenset(b)
print c
also bei dem frozenset bin ich mir nicht sicher....weiß nicht wie man es sonst in eine Liste bekommt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Kürzeste Lösung:

Code: Alles auswählen

[int(num) for num in str(623464357)]
Gibt aber noch diverse andere Möglichkeiten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

Für was steht denn das "num"?
Ich verstehe deine Lösung nämlich nicht so richtig Leonidas.
BlackJack

Vor allem gibt's 'ne kürzere (in Zeichen) Lösung:

Code: Alles auswählen

map(int, str(623464357))
:-)
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

Vielen Dank Black Jack mit deiner Lösung hats funktioniert. Und so schön kurz :D .


Vielen Dank auch an Leonidas deine Lösung war sicherlich auch richtig^^
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

nightm4r3^ hat geschrieben:Für was steht denn das "num"?
Ich verstehe deine Lösung nämlich nicht so richtig Leonidas.
Dann lerne List Comprehensions zu verstehen. Dazu gibt es viel Dokumentation.

Aber sag mal: die LC-Lösung verstehst du nicht, aber du kannst erklären was ``map()`` macht?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

Ja^^ aber wenn du genaueres wissen willst musst du meinen Informatik Lehrer fragen :wink: .
Deine Lösung hab ich jetzt aber auch verstanden nachdem mir Black Jack seine geschrieben hatte. So Geistesblitzartig^^
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

nightm4r3^ hat geschrieben:Ja^^ aber wenn du genaueres wissen willst musst du meinen Informatik Lehrer fragen :wink: .
Ähm.. mir ist schon klar was ``map()`` macht, nur meine Frage war, ob du es deinem Lehrer erklären kannst, was Funktionen machen die ihr noch nicht durchgenommen habt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

Ich meinte damit auch nicht das du meinem Lehrer Fragen sollst was ''map()'' bedeutet sondern ihn nur fragen, warum er mit uns diese funktion schon gemacht hat, aber ich trotzdem net weiß was deine Lösung bedeutet
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

nightm4r3^ hat geschrieben:aber ich trotzdem net weiß was deine Lösung bedeutet
Wenn du im Internet nach "List Comprehension" suchen würdest, wäre das schnell geklärt *hint*.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

Ja okay mach ich bei gelegenheit mal.
Nur momentan häng ich an nem Prüfziffernrechner und das wird mich noch einige Zeit in anspruch nehmen aber danach werd ichs mir mal anschauen.
Gnushi
User
Beiträge: 77
Registriert: Dienstag 12. Dezember 2006, 09:49

Hi!
nightm4r3^ hat geschrieben: Nummer: 623464357
Liste:[6,2,3,4,6,4,3,5,7]
Also genau die Zahl halt nur in einer Liste mit den einzelnen Ziffern.
Die hier vorgestellten Lösungen sind Kurzschreibweisen für:

Code: Alles auswählen

liste = []
for zeichen in "623464357":
    liste.append(int(zeichen))
print liste
Vielleicht hilft es.

GnuShi
nightm4r3^
User
Beiträge: 83
Registriert: Montag 11. Februar 2008, 15:43
Kontaktdaten:

Vielleicht hilft es.

Ja wie schon gesagt bin auch noch selber darauf gekommen. Trotzdem Danke GnuShi
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.
Antworten