2016-10-01 103 views
-3

我需要遍歷列表並檢查值是字符串還是int。有沒有簡單的方法在Python中做到這一點?如何檢查列表是否包含字符串

例如:

[1,2,3]將是真實的。

["a",2,3]將是錯誤的。

+0

爲什麼你需要這個?相反,處理異常可能會更好。請參閱http://stackoverflow.com/questions/12265451/ask-forgiveness-not-permission-explain –

+1

在我看來,您應該先嚐試編寫一些代碼併發布失敗的嘗試。 SO不是代碼寫入服務。 –

回答

3

您可以使用any()isinstance()組合:

In [1]: def contains_string(l): 
    ...:  return any(isinstance(item, basestring) for item in l) 
    ...: 

In [2]: contains_string([1,2,3]) 
Out[2]: False 

In [3]: contains_string(['a',2,3]) 
Out[3]: True 

basestring同時處理 「統一」 和 「STR」 字符串類型:

注意any()短路以及一旦它知道了結果,看到更多的是,這裏:

6

你可以做到這一點使用all,這將短路一旦假條件得到滿足。

>>> my_list = [1, 2, 3] 
>>> all(type(d) == int for d in my_list) 
True 

>>> my_list = ['1', 2, 3] 
>>> all(type(d) == int for d in my_list) 
False 

isinstance可以調用all時,也可以使用:

>>> my_list = [1, 2, 3] 
>>> all(isinstance(d, int) for d in my_list) 
True 

>>> my_list = ['1', 2, 3] 
>>> all(isinstance(d, int) for d in my_list) 
False 
0

假設你的意思是,你需要在列表中的所有值,只有當他們都整數檢查功能會返回真的,這是我該怎麼做:

def test(list): 
    result=True 
    for elem in list: 
     if type(elem)!=int: 
      result=False 
    return result 
相關問題