Hallo Python Freunde
Ich habe eine Modul-Methode die mir die Koordinaten
eines Rechteckes in einem String zurückgibt.
Der Inhalt des Strings mit Variablen dargestellt
enthält 'x1 y1 x2 y2'. Die einzelnen Koordinaten-
punkte sind mit einem Leerzeichen getrennt.
Also in mein Fall bekomme ich einen String mit
dem Format '0 0 150 11085' zurück.
Meine Frage ist:
Gibt es in Python eine Anweisung die mir diesen String
direkt in ein vierstelliges Integer Tuple umwandelt?
Ich kann mir nicht vorstellen, dass eine Methode, welche
für den Aufruf aus einem Pythonprogramm, ein Parameter
in einem solchen Format zurückgibt, welches programmier-
technisch in ein Tuple umformatiert werden muss.
Besten Dank für eure Hilfe
Gruss wuf
String Tuple Konvertierung
Hallo!Einfach wird es nicht gehen, denke ich.
Jan
wuf hat geschrieben:Gibt es in Python eine Anweisung die mir diesen String
direkt in ein vierstelliges Integer Tuple umwandelt?
Code: Alles auswählen
>>> tuple([int(z) for z in '0 0 150 11085'.split()])
(0, 0, 150, 11085)
>>>
Jan
Hi Jan
Deine Programmzeile macht genau was ich möchte.
Ein erstaunliches Konstrukt! Ich wäre nie auf
diese Idee gekommen. Ich wusste schlicht nicht,
dass Anweisungen in Python so kompakt in eine Zeile
verschachtelt werden können. Einfach Genial!
Die Programmiersprache "PYTHON" gefällt mir
immer mehr! Ich sehe hier kann noch vieles er-
forscht werden und ich muss noch vieles lernen.
Habe bei deinem Vorschlag auch die Anweisung
split() näher kennen gelernt.
Damit du etwas zu lachen hast zeige ich dir
was ich zusammengebraut habe um ein Tuple zu
erzeugen. Ich darf es fast nicht zeigen!
Recht vielen Dank für deine lehrreiche Hilfe Jan!
Gruss wuf
Deine Programmzeile macht genau was ich möchte.
Ein erstaunliches Konstrukt! Ich wäre nie auf
diese Idee gekommen. Ich wusste schlicht nicht,
dass Anweisungen in Python so kompakt in eine Zeile
verschachtelt werden können. Einfach Genial!
Die Programmiersprache "PYTHON" gefällt mir
immer mehr! Ich sehe hier kann noch vieles er-
forscht werden und ich muss noch vieles lernen.
Habe bei deinem Vorschlag auch die Anweisung
split() näher kennen gelernt.
Damit du etwas zu lachen hast zeige ich dir
was ich zusammengebraut habe um ein Tuple zu
erzeugen. Ich darf es fast nicht zeigen!
Code: Alles auswählen
list = []
accu = ''
ptr = 0
region = '0 0 150 11085'
for ptr in range(len(region)):
if region[ptr] <> ' ':
accu += region[ptr]
else:
list.append(int(accu))
accu = ''
list.append(int(accu))
print tuple(list)
Gruss wuf
Take it easy Mates!
Hallo wuf!
Jan
Mein Vorgehen, wenn ich mich mit den Möglichkeiten einer Programmiersprache vertraut machen will: Hin und wieder eine Referenz (oder ähnliches) in Buchform zur Hand nehmen und sich es damit in aller Ruhe aufm Sofa gemütlich machen, und dann einfach die Beschreibung der Methoden einiger Module lesen, um sich ein, wenn auch nur vages Bild zu machen, was das Modul kann. Wer 3 oder 4 Wochen nach dem Python-Einstieg sich noch von unentdeckten Methoden oder Funktionen der wichtigsten Klassen (string, file etc.) oder Module (os,sys,shutil etc.) überraschen lässt (von den built-ins ganz zu schweigen), hat bisher nicht richtig gelernt (sag ich mal so ).wuf hat geschrieben:immer mehr! Ich sehe hier kann noch vieles er-
forscht werden und ich muss noch vieles lernen.
Habe bei deinem Vorschlag auch die Anweisung
split() näher kennen gelernt.
Larry Wall (Perl-"Erfinder") nannte sowas Babysprache, IIRC. Und er meinte das absolut nicht abwertend.wuf hat geschrieben:Damit du etwas zu lachen hast zeige ich dir
was ich zusammengebraut habe um ein Tuple zu
erzeugen. Ich darf es fast nicht zeigen!
Jan
Hallo Python Freunde
Ich möchte den folgenden String in ein Tuple
umwandeln:
eingabe: '200x300+10+20' # String
ausgabe: (200,300,10,20) # Tuple
Mein Lösungsansatz ist:
Frage:
Da ich mich noch nicht als Python-KRACK
bezeichen kann, ist es möglich diese
Umwandlung noch zu vereinfachen? Evt.
auf einen Einzeiler zu reduzieren.
Besten Dank für Eure Bemühung.
Gruss wuf
Ich möchte den folgenden String in ein Tuple
umwandeln:
eingabe: '200x300+10+20' # String
ausgabe: (200,300,10,20) # Tuple
Mein Lösungsansatz ist:
Code: Alles auswählen
# Entferne das Zeichen 'x' aus dem String
temp = replace(eingabe,'x',' ')
# Entferne die Zeichen '+' aus dem String
temp = replace(temp,'+',' ')
# Der String wird in Tuple umgewandelt
ausgabe = tuple([int(z) for z in temp.split()])
Da ich mich noch nicht als Python-KRACK
bezeichen kann, ist es möglich diese
Umwandlung noch zu vereinfachen? Evt.
auf einen Einzeiler zu reduzieren.
Besten Dank für Eure Bemühung.
Gruss wuf
Take it easy Mates!
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi wuf,
Gruß
Dookie
Code: Alles auswählen
>>> eingabe = '200x300+10+20'
>>> ausgabe = tuple(map(int,eingabe.replace("x","+").split("+")))
>>> print ausgabe
(200, 300, 10, 20)
Gruß
Dookie
Hallo Dookie
Danke für Deine perfekte Aufösung meiner Aufgabe.
Sieht super aus. Zeigt wieder einmal mehr, dass
unsere Programmiersprache den Namen 'Hochsprache'
verdient.
Ich versuche sie immer besser auszusprechen, ist aber
leider noch stark mit einem Baby-Slang behaftet Hi.
Es beruhigt mich aber, wenn ich sehe was die Tkinter-
Leute mir für schwer verdauliche Daten auftischen.
Wie Du vielleicht festgestellt hast brauche ich diese
Umwandlung um mit der Kost umzugehen, welche mir die
Tkinter-Methode widget.winfo_geometry() in den Teller
legt. Warum diese Methode nicht direkt ein Tuple zu-
rückliefert wissen vermutlich die Tkinter-Leute am besten.
Besten Dank Euch Tutoren Dookie und Jan
Es ist gut, dass es Euch gibt!
Gruss wuf
Danke für Deine perfekte Aufösung meiner Aufgabe.
Sieht super aus. Zeigt wieder einmal mehr, dass
unsere Programmiersprache den Namen 'Hochsprache'
verdient.
Ich versuche sie immer besser auszusprechen, ist aber
leider noch stark mit einem Baby-Slang behaftet Hi.
Es beruhigt mich aber, wenn ich sehe was die Tkinter-
Leute mir für schwer verdauliche Daten auftischen.
Wie Du vielleicht festgestellt hast brauche ich diese
Umwandlung um mit der Kost umzugehen, welche mir die
Tkinter-Methode widget.winfo_geometry() in den Teller
legt. Warum diese Methode nicht direkt ein Tuple zu-
rückliefert wissen vermutlich die Tkinter-Leute am besten.
Besten Dank Euch Tutoren Dookie und Jan
Es ist gut, dass es Euch gibt!
Gruss wuf
Take it easy Mates!
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi wuf,
Tkinter kommt eben von tcl/tk und die manchmal seltsamen Parameter und Rückgaben kommen wohl daher.
Ich hab grad gesehen, daß jan vorher list-comprehension verwendet, damit gehts natürlich auch:
Python ist eben auch eine Sprache der vielen Wege
Gruß
Dookie
Tkinter kommt eben von tcl/tk und die manchmal seltsamen Parameter und Rückgaben kommen wohl daher.
Ich hab grad gesehen, daß jan vorher list-comprehension verwendet, damit gehts natürlich auch:
Code: Alles auswählen
ausgabe = tuple([int(a) for a in eingabe.replace("x","+").split("+")])
Gruß
Dookie