2016-05-31 9 views
2

私はタプルとタプルのタプルを持っています。タプルをタプルのタプルから区別する

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

にはどうすればabとは根本的に異なっていることを伝えることができますか?再び、事前に

2 
(2,) 
1 

ありがとう:両方

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

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

は、同じ出力を生成します!あなただけの一般的な構造の漠然とした考えをしたい、と文字列要素に括弧が含まれています場合は、括弧を数えることができる

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

答えて

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)naの要素の数です)ですが、これはデータがどこに来るかによって異なります。ただし、タプルのタプルを実際に持たないリスクを抱えていない限り、避けられません。

データを使って何をやっているかによって、実際には一連のシーケンスを確認することができます。その場合は、Sequence ABCPython 2)を使用してください。

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

は、等価演算子、==を使用

>>> str(a).count('(') 
1 
>>> str(b).count('(') 
3 
関連する問題