None in Liste ersetzen.

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
Knollo
User
Beiträge: 63
Registriert: Mittwoch 10. Juni 2020, 14:44

Guten Morgen, ich versuche None in einer Liste zu ersetzten:

Code: Alles auswählen

>>> resultList = ['9.8', '7.8', '8.4', None]
>>> ['None' if v is None else v for v in resultList]
['9.8', '7.8', '8.4', 'None']
im Interpreter ausgeführt funzt perfekt.

Code: Alles auswählen

def main():
    resultList = ['9.8', '7.8', '8.4', None]
    ['None' if v is None else v for v in resultList]
    print(resultList)
if __name__ == '__main__':
    main()
als Script ausgeführt erzeugt:

Code: Alles auswählen

['9.8', '7.8', '8.4', None]
Wo liegt der Fehler, was mach ich falsch?

Danke - Stefan
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Wo denkst du, änderst du resultList?
Knollo
User
Beiträge: 63
Registriert: Mittwoch 10. Juni 2020, 14:44

Die leeren Elemente (None) sollen mit dem String 'None' gefüllt werden. Ich hätte erwartet das

Code: Alles auswählen

['None' if v is None else v for v in resultList]
im Script das gleiche Ergebniss bringt wie im Terminal. Oder hab ich da was verpasst?
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

@Knollo: Du erzeugst eine neue Liste und schmeißt die dann gleich wieder weg. In der Interaktiven Shell wird das Ergebnis des Ausdrucks automatisch ausgegeben, in einem Programm nicht.
Variablennamen schreibt man komplett klein, Datentypen haben in Namen nichts verloren. Leerzeilen erhöhen die Lesbarkeit.

Code: Alles auswählen

def main():
    results = ['9.8', '7.8', '8.4', None]
    results = ['None' if value is None else value for value in results]
    print(results)

if __name__ == "__main__":
    main()
Knollo
User
Beiträge: 63
Registriert: Mittwoch 10. Juni 2020, 14:44

Ups, danke - jetzt passt es. Das mit dem "wegschmeißen" hatte ich leider glattweg übersehen :-(
Benutzeravatar
__blackjack__
User
Beiträge: 14047
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Alternativ, falls alles andere ausser `None` Zeichenketten sind:

Code: Alles auswählen

In [119]: list(map(str, ['9.8', '7.8', '8.4', None]))
Out[119]: ['9.8', '7.8', '8.4', 'None']
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten