join list of float to string ohne None

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.
Antworten
Hase
User
Beiträge: 101
Registriert: Donnerstag 1. Oktober 2009, 15:17
Wohnort: Bremer Speckgürtel

Hallo,
ich habe eine Liste

Code: Alles auswählen

a=[1.1, 2.2, None, 4.4]
ein

Code: Alles auswählen

b='/'.join(map(str,a))
ergibt

Code: Alles auswählen

b="1.1/2.2/None/4.4"
ich hätte aber gern ein

Code: Alles auswählen

b="1.1/2.2//4.4"
Das None soll also durch '"" ersetzt werden. Das kann ich sicher irgendwie hinbasteln, aber was ist der richtige weg?

Danke!
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Code: Alles auswählen

b="/".join(map(str,[item if item else "" for item in a]))
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Mit der Variante filterst du aber auch eine eventuell gewollte 0 heraus.

Besser:

Code: Alles auswählen

b = '/'.join(map(str, ('' if value is None else value for value in a)))
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn man schon einen Generatorausdruck hat, halte ich map für eine zusätzliche Komplikation:

Code: Alles auswählen

b = '/'.join("" if value is None else str(value) for value in a)
Antworten