检查元组的所有元素是否都属于同一类型

时间:2020-01-26 12:42:19

标签: python python-3.x for-loop while-loop tuples

我有一个简单的问题:我想编写一个函数来检查元组的所有元素是否都是int。

这是我尝试过的:

def istuple(t):
    if type(t)!=tuple:
        return None
    else:
        for i in t:
            while type(i) == int:
                return True
            return False

如果我输入以下元组,则代码的第一部分工作正常;

(1,2,3,6.6,3.5,9.0)或(2,4,'ok','yes','no')它应该返回False,但代码却给我True。 >

如何修改我的代码?我知道还有很多其他方法(甚至更短),但是我必须使用while循环

1 个答案:

答案 0 :(得分:2)

您可以使用isinstance来检查类型。

def istuple(t):
    return all(isinstance(x, int) for x in t)

编辑: 我刚读完你的最后一行。为此,请使用while循环:

def istuple(t):
    if not t:
        return False
    gen = iter(t)
    out = True
    while out:
        try:
            out = isinstance(next(gen), int)
        except StopIteration:
            return True
    return False