将元组与元组元组区分开来

时间:2016-05-31 10:32:17

标签: python python-2.7 python-3.x

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

a

如何判断bprint(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

产生相同的输出:

library(data.table)


setDT(df)[ , paste_column := paste( names( df[,colMeans(df > 0)==T, with=F] ), collapse = ' ') ]

再次提前致谢!

2 个答案:

答案 0 :(得分:5)

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

以下内容会发生什么?

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)的时间复杂度( n a中的元素数量),这可能不是根据您的数据来源而定。然而,这是不可避免的,除非你愿意承担实际上没有元组元组的风险。

根据您对数据的处理方式,您可能实际上想要检查一系列序列。在这种情况下,您应该使用Sequence ABCPython 2):

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

答案 1 :(得分:0)

使用等于运算符==

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

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

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