Python 区分元组和元组的元组

Python 区分元组和元组的元组,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我有一个元组,还有一个元组 import numpy as np a = ("Control", "Group1") b = (("Control", "Group1"), ("Control", "Group1", "Group2)) 我怎样才能知道a与b有根本的不同呢?两者 print(len(a)) print(np.shape(a)) print(len(np.shape(a))) 及 产生相同的输出: 2 (2,) 1 再次提前感谢 使用相等运算符,==: >>>

我有一个元组,还有一个元组

import numpy as np
a = ("Control", "Group1")
b = (("Control", "Group1"), ("Control", "Group1", "Group2))
我怎样才能知道
a
b
有根本的不同呢?两者

print(len(a))
print(np.shape(a))
print(len(np.shape(a)))

产生相同的输出:

2
(2,)
1

再次提前感谢

使用相等运算符,
==

>>> a = ("Control", "Group1")
>>> b = (("Control", "Group1"), ("Control", "Group1", "Group2"))
>>> a == b
False
如果您只想对一般结构有一个模糊的概念,并且字符串元素不包含括号,那么可以计算括号:

>>> str(a).count('(')
1
>>> str(b).count('(')
3

你不能,因为它们并没有根本的不同

以下情况应如何处理

c = (("Foo", "bar"), "baz")
它也是一个元组,它既包含“裸”值,也包含另一个元组

如果需要检测仅由元组组成的元组,请使用:

if all(isinstance(element, tuple) for element in a)
if not any(isinstance(element, tuple) for element in a)
如果需要检测仅由非元组组成的元组,请使用:

if all(isinstance(element, tuple) for element in a)
if not any(isinstance(element, tuple) for element in a)
上述两种方法的时间复杂度均为O(n)(n是
a
中的元素数),这可能不符合要求,具体取决于数据的来源。然而,这是不可避免的,除非您愿意冒没有真正拥有元组中的元组的风险

import numpy as np
a = ("Control", "Group1")
b = (("Control", "Group1"), ("Control", "Group1", "Group2))
根据您对数据所做的操作,您实际上可能需要检查序列。在这种情况下,您应该使用():