关于python:如何检查列表中是否有元组?

How to check if there's a tuple inside a list?

为什么这样做:

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

返回False?我如何检查在一个没有特定值的序列中是否有一个元组,甚至一个通用序列,如这个答案中所示。


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

你想要

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

对于一般序列,可以使用

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

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

阅读这个很好的答案了解更多信息。

你可以在这里找到一个关于检测序列的问题。


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

您可以检查类型。

1
2
3
4
5
def has_tuple(seq):    
    for i in seq:
        if isinstance(i, tuple):
            return True
    return False