Answering @ TekhenyGhemor Follow-up-Frage: Gibt es eine Möglichkeit, zu überprüfen, ob keine numerischen Zeichenfolgen in einer Liste enthalten sind. Zum Beispiel: ["eins", "zwei", "3"] würde false zurückgeben
Ja. Sie können die Zeichenfolge in eine Zahl konvertieren und stellen Sie sicher, dass es eine Ausnahme auslöst:
def isfloatstr(x):
try:
float(x)
return True
except ValueError:
return False
def valid_list(L):
return all((isinstance(el, str) and not isfloatstr(el)) for el in L)
prüfen:
>>> valid_list(["one", "two", "3"])
False
>>> valid_list(["one", "two", "3a"])
True
>>> valid_list(["one", "two", 0])
False
In [5]: valid_list ([ "eins", "zwei", " drei "]) Out [5]: True
Noch eine Frage, gibt es eine Möglichkeit zu überprüfen, ob keine numerischen Strings in einer Liste sind. Zum Beispiel: ["eins", "zwei", "3"] würde false zurückgeben – vkumar
@TekhenyGhemor - 'isinstance (item, str) und nicht item.lstrip ('-'). Isdigit()' für null oder positive ganze Zahlen . Es wird mehr involviert, wenn Sie nach Gleitkommazahlen, komplexen Zahlen usw. suchen wollen. – TigerhawkT3
@XamuelSchulman - Meinen Sie, den 'all()' und den Generatorausdruck loszuwerden (kein Listenverständnis) und ein traditionelles 'für. .else' Schleife? Oder meinen Sie, den aktuellen Code in mehrere Zeilen aufzuteilen? Ich sehe nicht, wie einer von denen helfen würde. Dies ist bereits prägnant, klar und kanonisch. – TigerhawkT3