测试Python元组/列表中元素的类型

37 投票
5 回答
69630 浏览
提问于 2025-04-17 10:51

你怎么确认一个列表或元组里的所有元素都是同一种类型,并且是特定的类型呢?

比如说:

(1, 2, 3)  # test for all int = True
(1, 3, 'a') # test for all int = False

5 个回答

5

根据你正在做的事情,使用鸭子类型可能会更符合Python的风格。这样的话,像整数一样的东西(比如浮点数等)也可以被当作整数来使用。在这种情况下,你可以尝试把元组中的每个项目都转换成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)
8
all(isinstance(i, int) for i in your_list))

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。

68
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

你可以用 type(n) is int 来代替 isinstance(n, int)

撰写回答