Liste -> String Umwandlung

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
wuf
User
Beiträge: 1374
Registriert: Sonntag 8. Juni 2003, 09:50

Liste -> String Umwandlung

Beitragvon wuf » Dienstag 9. März 2004, 18:31

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:
Take it easy Mates!
Benutzeravatar
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Beitragvon fs111 » Dienstag 9. März 2004, 19:02

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
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Dienstag 9. März 2004, 19:06

Hi wuf,

Code: Alles auswählen

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



Gruß

Dookie
Sneaker
User
Beiträge: 52
Registriert: Montag 19. Januar 2004, 22:19
Wohnort: Vor meinem Computer
Kontaktdaten:

Beitragvon Sneaker » Dienstag 9. März 2004, 20:23

Oder noch ne variante ;)

Code: Alles auswählen

import string

liste = ['E','0','.','1']
resstring = string.join(liste, "")
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Dienstag 9. März 2004, 22:04

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
Benutzeravatar
wuf
User
Beiträge: 1374
Registriert: Sonntag 8. Juni 2003, 09:50

Beitragvon wuf » Dienstag 9. März 2004, 22:29

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:
Take it easy Mates!
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Dienstag 9. März 2004, 23:09

Die Variante "".join(liste) dürfte die Effizeinteste sein.
Die Variannte mit reduce und lambda ist wohl die ineressanteste ;)


Gruß

Dookie
Benutzeravatar
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Beitragvon fs111 » Mittwoch 10. März 2004, 12:20

Sorry, ja war ein Tippfehler, ich meinte natürlich ar.tostring()

Grüße

fs111
Sneaker
User
Beiträge: 52
Registriert: Montag 19. Januar 2004, 22:19
Wohnort: Vor meinem Computer
Kontaktdaten:

Beitragvon Sneaker » Mittwoch 10. März 2004, 16:14

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...
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Mittwoch 10. März 2004, 16:52

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder