Python | Leerzeichen aus liste entfernen

3 Antworten

Ich würde es so machen:
text = "Hello, World!"
chars = list(c for c in text if not c.isspace())

bzw. wenn man doppelte Zeichen vermeiden möchte:

chars = list(sorted(set(c for c in text if not c.isspace())))

Bei so einer einfachen Aufgabe muss man nicht extra mit filter() hantieren, und kann sich die funktionalen Eigenschaften von Python zunutze machen. :)


ralphdieter  15.02.2015, 09:10
kann sich die funktionalen Eigenschaften von Python zunutze machen

Naja, list comprehension zähle ich nicht mehr zu den funktionalen Dingen. Ich verwende dieses Konstrukt zwar sehr gern, aber beim Profilen leuchten solche Zeilen regelmäßig knallrot auf. Die filter-Funktion scheint da effizienter zu sein.

0

Habe ich persönlich zwar noch nicht gemacht (zumindest nicht in Python) aber mit regulären ausdrücken müsste das gehen, einfach mal nach googlen. Das hatte ich nur mal kurz gebraucht, deshalb weiß ich nicht mehr so genau wie das ging ;)

Viel Grüße und viel Glück dabei

Wuldorf


DrragoGangsta 
Beitragsersteller
 09.02.2015, 13:05

hab ich shon versucht, hat aber nichts funktioniert wie ich es will

0
wuldorf  09.02.2015, 13:08
@DrragoGangsta

leider kenne ich mich mit Python nur grundlegegend aus und mit regulären ausdrücken habe ich mich nicht alzu lang beschäftigt...kleiner Tipp am rande bei solchen recht speziellen Fragen wird man in Foren meist schneller fündig als hier.

Wie sieht den dein Code mit dem regulären ausdrücken aus, vielleicht fällt mir ja irgendwas auf, aber versprechen kann ich nix ^^

0
DrragoGangsta 
Beitragsersteller
 09.02.2015, 13:12
@wuldorf

ich hab das jetzt gelöst indem ich alle elemente die nicht leer sind, also alle nichtleerzeichtn, in eine neue liste verschoben werden. nicht elegant, funktioniert aber

1

Deine Liste war vorher ein String, somit wäre die replace Funktion in der Lage gewesen, alle Leerzeichen durch nichts zu ersetzen.

print("Hello world !".replace(" ", "")) # Helloworld!

Ebenso kannst du die filter Funktion einsetzen, um unerwünschtes aus der Liste zu entfernen.

print(list(filter(lambda x: x != ' ', ['H', 'e', 'l', 'l', 'o' , ' ', 'w', 'o', 'r', 'l', 'd', ' ', '!']))) # ['H', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd', '!']

(Hinweis: Seit Python3 gibt filter ein Filter-Objekt zurück, daher ist die zusätzliche Konvertierung zur Liste vonnöten)


ralphdieter  15.02.2015, 09:04

"Hello world !".translate( None, ' ' ) tut's übrigens auch.

1