2016-12-07 8 views
3

タプル表記より少し混乱しています。タプルの各要素はタプルとして扱われるのか、それともその要素の型であるのか?タプルの要素自体がタプルですか?

たとえば、タプルt = (1,2,3,4)ため、1 in tはINT 1タプルtにあることを意味し、Trueあります。

ただし、私がt[0:1]を評価すると、タプル(1,)が得られます。

(1,) in tFalseであるという事実は、さらに混乱します。

ここでは何が起こっていますか?どちらですか? tタプルまたは整数の要素ですか?

+0

明らかに、 'T [0:1]である、 'T''の要素を返しませんが、T '、 'の "subtupleを"なぜ '(1、)in t'が' False'なのか? – chepner

+0

タプルの1要素幅スライスに 't [0; 1]'でアクセスしています。このようなスライスはタプルですが、その要素は以前のタイプのものでもあります。 –

+3

タプルの要素はタプルではなく、*スライス*です。 't [0:]'や 't [1]'を試して、 't [0:1]'ではなく要素を取得してください。 –

答えて

6

いいえ、そうではありません。

しかし、スライシング[0:1]は、常にあなたに繰り返し可能性のサブセットを与えます。要素を取得するには、t[0]を入力します。これはタプルではなく整数です。

0

タプル内の項目は、タプルまたはその他のデータ型にすることができます。タプルの中に含まれるアイテムのタイプを混在させることさえできます。

t[0:1]を使用すると、スライスしているので、スライスしているオブジェクトのセグメントが得られます。 read the docs

一方、タプル内のアイテムには、t[0]でインデックスを付けることでアクセスできます。 more docs

あなたがオブジェクトの種類を確認することができます。

t = (1,2,3,4) 
type(t) 
Out[12]: tuple 

type(t[1]) 
Out[13]: int 


type(t[:1]) 
Out[14]: tuple 


t2 = ('a',1, (0,1)) 

for item in t2: 
    print(type(item)) 

<class 'str'> 
<class 'int'> 
<class 'tuple'> 
関連する問題