测试变量是否为“元组列表”类型

3

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

isinstance 只能判断变量是否是列表或元组,但我不知道如何检查嵌套结构。


2
由于Python是动态类型的,您将不得不检查列表的每个元素。 - quamrana
2个回答

8
您可以结合使用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
>>>

1
使用 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或列表推导式,一个空列表也是“假”的,因此它既可以是测试,又可以是结果,如果您正在寻找实际不是元组的元素。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接