测试变量是否具有类型 "list of tuples"



如何检查变量是否是元组列表?

isinstance 仅显示变量是列表还是元组,但我不知道如何检查嵌套结构。

您可以使用allinstanceof的组合:

>>> a = [(1,2),(3,5)]
>>> all(isinstance(item, tuple) for item in a)
True
>>> b = [(1,2),(3,5), "string"]
>>> all(isinstance(item, tuple) for item in b)
False
>>>

使用 all

>>> lit=[(1,),(2,),(3,)]
>>> lin=[(1,),(2,),(3,),4]
>>> all(isinstance(e,tuple) for e in lit)  
True
>>> all(isinstance(e,tuple) for e in lin)  
False

您还可以在过滤器中否定 lambda,以测试和查找不是元组的元素:

>>> filter(lambda e: not isinstance(e, tuple), lit)
[]
>>> filter(lambda e: not isinstance(e, tuple), lin)
[4]

或者使用列表推导来查找非元组的索引:

>>> [i for i, e in enumerate(lit) if not isinstance(e, tuple)]
[]
>>> [i for i, e in enumerate(lin) if not isinstance(e, tuple)]
[3]

如果您使用filter或列表推导,则空列表也是"虚假的",因此如果您正在寻找不是元组的实际元素,这既可以是测试和结果。

最新更新