2012-01-22 74 views

回答

26
all(isinstance(n, int) for n in lst) 

演示:

In [3]: lst = (1,2,3) 

In [4]: all(isinstance(n, int) for n in lst) 
Out[4]: True 

In [5]: lst = (1,2,'3') 

In [6]: all(isinstance(n, int) for n in lst) 
Out[6]: False 

相反的isinstance(n, int)你也可以使用type(n) is int

+6

的OP應該是警告說這會導致Python 2中的意外行爲,因爲isinstance(10 ** 100,int)== False。你需要做isinstance(n,(int,long))。但在Python中,需要檢查某種類型的東西常常是開始時出現設計錯誤的標誌。 – DSM

+2

此外,對於舊式類,'type()'返回'''。 – Gandaro

4
all(isinstance(i, int) for i in your_list)) 
4

取決於你在做什麼它可能使用duck typing會更加Pythonic。這樣,像int(浮點數等)的東西可以被傳遞以及int。在這種情況下,你可以嘗試在元組把每個項目的int,再搭上出現的任何異常:

>>> def convert_tuple(t, default=(0, 1, 2)): 
...  try: 
...   return tuple(int(x) for x in t) 
...  except ValueError, TypeError: 
...   return default 
... 

然後你可以使用它像這樣:

>>> convert_tuple((1.1, 2.2, 3.3)) 
(1, 2, 3) 
>>> convert_tuple((1.1, 2.2, 'f')) 
(0, 1, 2) 
>>> convert_tuple((1.1, 2.2, 'f'), default=(8, 9, 10)) 
(8, 9, 10)