尝试将^{}与^{}结合使用:all(isinstance(x, int) for x in lst)
如果需要,甚至可以使用isinstance检查多个类型:all(isinstance(x, (int, long)) for x in lst)
并不是说这也会继承类。e、 g.:class MyInt(int):
pass
print(isinstance(MyInt('3'),int)) #True
如果您需要将自己限制为整数,那么可以使用all(type(x) is int for x in lst)。但这是一种非常罕见的情况。
如果所有其他元素都是同一类型,则可以使用此函数编写一个有趣的函数,该函数将返回序列中第一个元素的类型:def homogeneous_type(seq):
iseq = iter(seq)
first_type = type(next(iseq))
return first_type if all( (type(x) is first_type) for x in iseq ) else False
这对任何任意iterable都有效,但它将在过程中使用“迭代器”。
同样的另一个有趣的函数返回一组公共基:import inspect
def common_bases(seq):
iseq = iter(seq)
bases = set(inspect.getmro(type(next(iseq))))
for item in iseq:
bases = bases.intersection(inspect.getmro(type(item)))
if not bases:
break
return bases