区分元组和元组的元组

2024-05-19 13:59:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个元组,还有一个元组。你知道吗

import numpy as np
a = ("Control", "Group1")
b = (("Control", "Group1"), ("Control", "Group1", "Group2))

我怎么知道ab有本质区别呢?两者

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

以及

print(len(b))
print(np.shape(b))
print(len(np.shape(b)))

产生相同的输出:

2
(2,)
1

再次提前感谢!你知道吗


Tags: importnumpylenasnpcontrol元组print
2条回答

你不能,因为他们没有根本的不同。你知道吗

以下情况会发生什么?你知道吗

c = (("Foo", "bar"), "baz")

它也是一个元组,它既包含“裸”值,也包含另一个元组。你知道吗

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

if all(isinstance(element, tuple) for element in a)

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

if not any(isinstance(element, tuple) for element in a)

以上两个都具有O(n)的时间复杂度(其中na中的元素数),这可能不理想,这取决于数据来自何处。然而,这是不可避免的,除非你愿意冒没有元组的风险。你知道吗

根据您对数据所做的操作,实际上可能需要检查序列。在这种情况下,应该使用Sequence ABCPython 2):

import collections.abc
if all(isinstance(element, collections.abc.Sequence) for element in a)

使用相等运算符==

>>> a = ("Control", "Group1")
>>> b = (("Control", "Group1"), ("Control", "Group1", "Group2"))
>>> a == b
False

如果您只想对一般结构有一个模糊的概念,并且字符串元素不包含括号,则可以计算括号:

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

相关问题 更多 >