为什么这样做:
seq = [(1, 2), (3, 4), (5, 6)]
print(() in seq)
返回False
吗?如何检查没有特定值as in this answer的序列中是否有元组,甚至是通用序列。
答案 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