如何检查变量是否是元组列表?
isinstance 仅显示变量是列表还是元组,但我不知道如何检查嵌套结构。
您可以使用all
和instanceof
的组合:
>>> 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
或列表推导,则空列表也是"虚假的",因此如果您正在寻找不是元组的实际元素,这既可以是测试和结果。