python - 区分元组和元组的元组

标签 python python-2.7 python-3.x

我有一个元组和一个元组的元组。

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

再次提前致谢!

最佳答案

你不能,因为它们没有本质上的不同。

以下情况会发生什么?

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 ABC (Python 2):

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

关于python - 区分元组和元组的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37543246/

相关文章:

python - Google Cloud Vision AutoML 和 TensorFlow 对象检测差异

python - 知道python中函数的输入参数的长度

python-2.7 - 根据请求从 S3 提供文件的 AWS Lambda 函数

python - 用python解码二维码

python - Pandas DataFrame - 删除特定列中与前一行具有相同值的行

python - 按字母顺序对结构中的数组进行排序?

python - 如果存在嵌套类定义,为什么 python 编译不起作用?

Python:更改列表列表中的元素

python - 找出给定数据集中每列缺失值的百分比

python - 使用文本 I/O 时,open() 的缓冲参数似乎被忽略