如何验证列表或元组中的所有元素的类型是相同的还是特定的类型?元素的测试类型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