如何驗證列表或元組中的所有元素的類型是相同的還是特定的類型?元素的測試類型python元組/列表
例如:
(1, 2, 3) # test for all int = True
(1, 3, 'a') # test for all int = False
如何驗證列表或元組中的所有元素的類型是相同的還是特定的類型?元素的測試類型python元組/列表
例如:
(1, 2, 3) # test for all int = True
(1, 3, 'a') # test for all int = False
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
all(isinstance(i, int) for i in your_list))
取決於你在做什麼它可能使用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)
的OP應該是警告說這會導致Python 2中的意外行爲,因爲isinstance(10 ** 100,int)== False。你需要做isinstance(n,(int,long))。但在Python中,需要檢查某種類型的東西常常是開始時出現設計錯誤的標誌。 – DSM
此外,對於舊式類,'type()'返回'''。 –
Gandaro