Seite 1 von 1

None in Liste ersetzen.

Verfasst: Dienstag 26. November 2024, 09:09
von Knollo
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

Re: None in Liste ersetzen.

Verfasst: Dienstag 26. November 2024, 09:46
von sparrow
Wo denkst du, änderst du resultList?

Re: None in Liste ersetzen.

Verfasst: Dienstag 26. November 2024, 09:55
von Knollo
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?

Re: None in Liste ersetzen.

Verfasst: Dienstag 26. November 2024, 10:01
von Sirius3
@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()

Re: None in Liste ersetzen.

Verfasst: Dienstag 26. November 2024, 10:12
von Knollo
Ups, danke - jetzt passt es. Das mit dem "wegschmeißen" hatte ich leider glattweg übersehen :-(

Re: None in Liste ersetzen.

Verfasst: Dienstag 26. November 2024, 11:04
von __blackjack__
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']