@__deets__: falsche Klammerung, die Klammer ist um (int or float) was immer int ist, weil int schon wahr ist.
@Beginner123: Deine Bedingung lautet daher nur `type(x) == int`. In Wirklichkeit willst Du aber wahrscheinlich nicht nur int und float rauswerfen, sondern alle Arten von Zahlen? Das macht man in Python aber nicht, indem man eine Liste verändert, sondern indem man eine neue Liste generiert, die nur die Elemente enthält, die man behalten will.
Code: Alles auswählen
from numbers import Number
def test(items):
return [x for x in items if not isinstance(x, Number)]
items = ["e", 1.23,"k",1.4,-1,"l"]
print(test(items))
oder mit filter_false
Code: Alles auswählen
from itertools import filterfalse
def test(items):
return list(filterfalse(lambda x: isinstance(x, Number), items))
Sonstige Anmerkungen:
Bei einem if-Block mit nur `pass` würde man die Bedingung umdrehen und den else-Block als if-Block nehmen.
Eine Funktion sollte möglichst nicht die Liste ändern, die man ihr übergibt, und wenn, dann das deutlich in der Dokumentation zur Funktion beschreiben und dann None zurückgeben.
@Bolitho: die Schleife direkt über die Liste zu machen führt zu falschen Ergebnissen, wenn man innerhalb der Schleife die Liste ändert.