リストには、リスト内のすべての項目が文字列かどうかを教えてくれる関数がありますか?例についてはリスト内のすべての項目が文字列かどうかをチェックする方法
: ["one", "two", 3]
はFalse
を返す、と["one", "two", "three"]
はTrue
を返します。
リストには、リスト内のすべての項目が文字列かどうかを教えてくれる関数がありますか?例についてはリスト内のすべての項目が文字列かどうかをチェックする方法
: ["one", "two", 3]
はFalse
を返す、と["one", "two", "three"]
はTrue
を返します。
all()
を使用し、タイプがisinstance()
であることを確認してください。 TekhenyGhemorのフォローアップの質問に答える@
>>> l = ["one", "two", 3]
>>> all(isinstance(item, str) for item in l)
False
>>> l = ["one", "two", '3']
>>> all(isinstance(item, str) for item in l)
True
:何の数値文字列がリストにないかどうかを確認する方法があります。例:["one"、 "two"、 "3"]はfalseを返します。
はい。あなたは文字列を数値に変換し、それが例外を発生させていることを確認することができます
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)
チェック:[5]では
>>> valid_list(["one", "two", "3"])
False
>>> valid_list(["one", "two", "3a"])
True
>>> valid_list(["one", "two", 0])
False
:valid_list([ "1"、 "2"、 " 3 "]) Out [5]:True
もう1つ質問があります。数字の文字列がリストにないかどうかを確認する手段がありますか?たとえば、["one"、 "two"、 "3"]はfalseを返します。 – vkumar
@TekhenyGhemor - ゼロまたは正の整数の場合はisinstance(item、str)、item.lstrip( ' - ').isdigit() 。浮動小数点数、複素数などをチェックしたい場合にはもっと複雑になります。 – TigerhawkT3
@XamuelSchulman - 'all()'とジェネレータの式(リストの解説ではない)を取り除き、従来のforを作成することを意味しますか? .else'ループ?あるいは、現在のコードを複数の行に分割することを意味しますか?私はどちらかが助けになる方法を見ていない。これはすでに簡潔で明確で標準的です。 – TigerhawkT3