如果我在python中有一個列表,是否有函數告訴我列表中的所有項目是否都是字符串?如何檢查列表中的所有項目是否爲字符串
例如: ["one", "two", 3]
將返回False
,和["one", "two", "three"]
將返回True
。
如果我在python中有一個列表,是否有函數告訴我列表中的所有項目是否都是字符串?如何檢查列表中的所有項目是否爲字符串
例如: ["one", "two", 3]
將返回False
,和["one", "two", "three"]
將返回True
。
只需使用all()
並檢查類型與isinstance()
。
>>> 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
回答@ TekhenyGhemor的後續問題:有沒有一種方法來檢查列表中是否沒有數字字符串。例如:[「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)
檢查:
>>> valid_list(["one", "two", "3"])
False
>>> valid_list(["one", "two", "3a"])
True
>>> valid_list(["one", "two", 0])
False
在文獻[5]:valid_list([ 「一」, 「二」,「三個]]) 輸出[5]:真
還有一個問題,有沒有辦法檢查列表中是否沒有數字字符串。例如:[「one」,「two」,「3」]將返回false – vkumar
@TekhenyGhemor - isinstance(item,str)而不是item.lstrip(' - ')。isdigit()'爲零或正整數。如果你想檢查浮點數,複數等,它會變得更加複雜。 – TigerhawkT3
@XamuelSchulman - 你的意思是擺脫'all()'和生成器表達式(不是列表理解)並創建一個傳統的'for。 .else'循環?或者你的意思是把當前的代碼分解成多行?我不明白這些如何幫助。這已經是簡潔明瞭的規範。 – TigerhawkT3