Zahlen aus einer Liste entfernen

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
Benutzeravatar
pywald
User
Beiträge: 42
Registriert: Mittwoch 6. Januar 2021, 15:51

Dienstag 2. März 2021, 16:23

Hallo,
kann man alle Zahlen aus einer Liste entfernen? Z.B. Liste: "1, d, 3, 5, a" Ausgabe: "d, a". Würde so etwas gehen?
Danke im voraus
pywald
__deets__
User
Beiträge: 9685
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dienstag 2. März 2021, 17:09

Das kannst du zb mit isinstance prüfen.
"Herr Fachmann, wie bohre ich mir ein Loch ins Knie?"

"Das sollten sie nicht tun! Und wenn man operiert, muss man auf Hygiene achten, und nicht einen Bohrer, der gerade in der Wand ein Loch gebohrt hat, nehmen."

"Das war nicht meine fachliche Frage!!"
Benutzeravatar
hyle
User
Beiträge: 46
Registriert: Sonntag 22. Dezember 2019, 23:19
Wohnort: Leipzig

Dienstag 2. März 2021, 19:20

Würde ich mit isdigit() machen.

Code: Alles auswählen

>>> print(liste)
['1', 'd', '3', '5', 'a']
>>>
>>> neue_liste = []
>>>
>>> for eintrag in liste:
...     if not eintrag.isdigit():
...         neue_liste.append(eintrag)
...
>>> print(neue_liste)
['d', 'a']
>>>
>>>
>>> liste = neue_liste
>>>
>>> print(liste)
['d', 'a']
>>>
Alles was wir sind ist Sand im Wind Hoschi.
nezzcarth
User
Beiträge: 1288
Registriert: Samstag 16. April 2011, 12:47

Dienstag 2. März 2021, 19:48

Wie liegt die Eingabe den vor? Als Liste von Strings, als Liste von Strings oder Integern, oder als einzelner String wie im Beispiel?
Benutzeravatar
sparrow
User
Beiträge: 2636
Registriert: Freitag 17. April 2009, 10:28

Dienstag 2. März 2021, 22:50

@pywald: In Python ist es unüblich Dinge "aus einer Liste" zu löschen. Man erstellt eine neue, die nur die Elemente enthält, die man benötigt. Daher auch das vorgehen von hyle. Da bietet sich aber auch eine list comprehension an. Und wenn nicht alle Elemente eine Zeichenkette sind, dann kann man die Prüfung, wie von __deets__ vorgeschlagen, mit isinstance machen:

Code: Alles auswählen

>>> values = [1, "d", 3, 5, "a"]
>>> selected_values = [value for value in values if isinstance(value, int)]
>>> selected_values
[1, 3, 5]
Benutzeravatar
__blackjack__
User
Beiträge: 8572
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Dienstag 2. März 2021, 23:27

So etwas?

Code: Alles auswählen

In [450]: items = (item.strip() for item in "1, d, 3, 5, a".split(","))         

In [451]: ", ".join(item for item in items if not item.isdigit())               
Out[451]: 'd, a'
Falls das nicht das gesuchte ist, bräuchten wir wohl mehr Informationen was Du da tatsächlich hast und willst.
“Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”
Antworten