Seite 1 von 1

Liste -> String Umwandlung

Verfasst: Dienstag 9. März 2004, 18:31
von wuf
Hallo Python Freunde

Ich möchte den Inhalt einer Liste in
einen String umwandeln.

Der Listeninhalt ist:
['E','0','.','1']

Der resultierende String ist:
'E0.1'

Mein vermutlich primitiver Lösungsansatz sieht
wie folgt aus:

Code: Alles auswählen

liste = ['E','0','.','1']
resstring = ''

for item in liste:
	resstring += item
Frage: Gibt es eine Anweisung die Listen
direkt in Strings umwandeln kann. Konnte
in meiner verfügbaren Literatur nichts
finden.

Gruss wuf :wink:

Verfasst: Dienstag 9. März 2004, 19:02
von fs111
Wenn es wirklich immer nur einzelne Zeichen sind, geht das auch so:

Code: Alles auswählen

import array

liste = ['a','b','c']

ar = array.array('c', liste) # c steht für character 
print liste.tostring()

siehe dazu auch hier:
http://python.org/doc/current/lib/module-array.html

HTH

fs111

Verfasst: Dienstag 9. März 2004, 19:06
von Dookie
Hi wuf,

Code: Alles auswählen

liste = ['E','0','.','1']
resstring = "".join(liste)

Gruß

Dookie

Verfasst: Dienstag 9. März 2004, 20:23
von Sneaker
Oder noch ne variante ;)

Code: Alles auswählen

import string

liste = ['E','0','.','1'] 
resstring = string.join(liste, "")

Verfasst: Dienstag 9. März 2004, 22:04
von Dookie
Da der stringtype schon fasst alle Funktionen des Moduls string als Methoden zur Verfügung stellt, braucht man das Modul string kaum noch.
Hier auch noch eine schöne Version:

Code: Alles auswählen

liste = ['E','0','.','1']
resstring = reduce(lambda a, b: a+b, liste, "")

Gruß

Dookie

Verfasst: Dienstag 9. März 2004, 22:29
von wuf
Hallo fs111, Sneaker und Dookie!

Vielen Dank für Eure interessanten Vorschläge.
Sie enthalten neue Anweisungen die ich bei
meinen Programmierarbeiten bis jetzt noch nicht
einsetzte. Habe drei Bücher vor mir, welche für
diesen Fall keine brauchbare Lösung aufzeigen.
Eventuell wäre auf den rund 1800 Seiten irgendwo
etwas auffindbar.

Habe Eure Vorschläge ausprobiert. Beim Vorschlag
von fs111 bekomme ich bei der Zeile:

print liste.tostring()

eine Fehlermeldung. Wenn ich die Anweisung ändere auf:

print ar.tostring()

funktioniert es.

Die von Dookie verwendete Methode 'join' habe ich
in der Python Library Reference aufgefunden und
näher studieren wollen, aber eine Library Reference
ohne Beispiele bringt einem auch nicht so schnell
auf die Idee die join Methode als "".join(seq) ins
Skript zu schreiben.Hi

Beim Vorschlag von Sneaker probierte ich die
Zeile auf:

print string.join(liste, "")

abzuändern, dies ergab bei mir eine Syntax-Fehlermeldung.
Aber es funktioniert richtig, wenn man schreibt:

resstring = string.join(liste, "")
print resstring


OK! Slogan -> Nicht verzagen sondern unsere guten
Forum-Tutoren fragen!

Super! Nochmals besten Dank für Eure Hilfe!

N.B. Dookie, Besten dank noch für die letzte
Variante!

Gruss wuf :wink: :wink: :wink:

Verfasst: Dienstag 9. März 2004, 23:09
von Dookie
Die Variante "".join(liste) dürfte die Effizeinteste sein.
Die Variannte mit reduce und lambda ist wohl die ineressanteste ;)


Gruß

Dookie

Verfasst: Mittwoch 10. März 2004, 12:20
von fs111
Sorry, ja war ein Tippfehler, ich meinte natürlich ar.tostring()

Grüße

fs111

Verfasst: Mittwoch 10. März 2004, 16:14
von Sneaker
ich würde das string.join() aber als besten stil empfehlen, da weiss man wenigstens von welchem modul das kommt statt eine methode von einem leeren string aufzurufen ... mir würde es nicht gefallen...

Verfasst: Mittwoch 10. März 2004, 16:52
von Milan
Hi. Es ist de facto egal, da die Methode mit der Funktion im Modul identisch ist und die Methoden der Standarttypen in Python sollte jeder kennen :wink: (für Listen, Dicts und Files gibt es keine Module). Im Prinzip hast du zwar recht, dass man dann 100% sieht, das eine Stringmethode genutzt wird, aber bis auf string.maketrans braucht man wirklich kaum eine Funktion aus dem Modul string. Der String, an dem die Methode join gerufen wird, funktioniert ja auch nur als Seperator und der soll ja hier "leer" sein.

Milan