Seite 1 von 2

Einzelne Ziffern in Listen

Verfasst: Samstag 16. Februar 2008, 10:20
von nightm4r3^
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.

Verfasst: Samstag 16. Februar 2008, 10:25
von 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.)

Verfasst: Samstag 16. Februar 2008, 10:27
von nightm4r3^
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.

Verfasst: Samstag 16. Februar 2008, 10:29
von Leonidas
Kürzeste Lösung:

Code: Alles auswählen

[int(num) for num in str(623464357)]
Gibt aber noch diverse andere Möglichkeiten.

Verfasst: Samstag 16. Februar 2008, 10:32
von nightm4r3^
Für was steht denn das "num"?
Ich verstehe deine Lösung nämlich nicht so richtig Leonidas.

Verfasst: Samstag 16. Februar 2008, 10:32
von BlackJack
Vor allem gibt's 'ne kürzere (in Zeichen) Lösung:

Code: Alles auswählen

map(int, str(623464357))
:-)

Verfasst: Samstag 16. Februar 2008, 10:34
von nightm4r3^
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^^

Verfasst: Samstag 16. Februar 2008, 10:36
von Leonidas
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?

Verfasst: Samstag 16. Februar 2008, 10:37
von nightm4r3^
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^^

Verfasst: Samstag 16. Februar 2008, 10:39
von Leonidas
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.

Verfasst: Samstag 16. Februar 2008, 10:42
von nightm4r3^
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

Verfasst: Samstag 16. Februar 2008, 10:45
von Leonidas
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*.

Verfasst: Samstag 16. Februar 2008, 10:47
von nightm4r3^
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.

Re: Einzelne Ziffern in Listen

Verfasst: Samstag 16. Februar 2008, 10:51
von Gnushi
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

Verfasst: Samstag 16. Februar 2008, 10:53
von nightm4r3^
Vielleicht hilft es.

Ja wie schon gesagt bin auch noch selber darauf gekommen. Trotzdem Danke GnuShi

Verfasst: Sonntag 17. Februar 2008, 18:14
von numerix
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]

Verfasst: Sonntag 17. Februar 2008, 18:47
von 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.

Verfasst: Montag 18. Februar 2008, 15:32
von numerix
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.

Verfasst: Montag 10. März 2008, 21:27
von Markus12
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 :-)

Verfasst: Montag 10. März 2008, 21:35
von BlackJack
Der Ausgang war eine Zahl und keine Zeichenkette und das Ergebnis sollte eine Liste mit Zahlen sein und keine Liste mit Zeichenketten.