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

Eri*_*ans 6 python

为什么这样:

seq = [(1, 2), (3, 4), (5, 6)]
print(() in seq)
Run Code Online (Sandbox Code Playgroud)

回来False?如何在没有特定值的序列中检查是否存在元组,甚至是通用序列,如本答案中所述.

tim*_*geb 25

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

你要

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

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

>>> from collections import abc
>>> any(isinstance(x, abc.Sequence) for x in seq)
True
Run Code Online (Sandbox Code Playgroud)

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

阅读此优秀答案以获取更多信息.

您可以在此处找到有关检测序列的问题.

  • @cat不幸的是,不是真的.我详细写了为什么检查`abc.Iterable`是不可靠的[这里](/sf/answers/2548528531/). (2认同)