如何检查列表中是否有元组?

时间:2018-10-29 12:58:02

标签: python

为什么这样做:

seq = [(1, 2), (3, 4), (5, 6)]
print(() in seq)

返回False吗?如何检查没有特定值as in this answer的序列中是否有元组,甚至是通用序列。

2 个答案:

答案 0 :(得分:25)

()是一个空元组。 seq不包含空元组。

你想要

>>> seq = [(1, 2), (3, 4), (5, 6)]
>>> any(isinstance(x, tuple) for x in seq)
True

对于通用序列,您可以使用

>>> from collections import abc
>>> any(isinstance(x, abc.Sequence) for x in seq)
True

但是,许多对象被非正式地视为序列,但是既没有实现完整的协议abc.Sequence定义也没有注册为Sequence的虚拟子类。

阅读this excellent answer,了解更多信息。

您会发现有关检测序列here的问题。

答案 1 :(得分:3)

您要检查的是列表中存在一个空元组。

您可以改为检查类型。

def has_tuple(seq):    
    for i in seq:
        if isinstance(i, tuple):
            return True
    return False