2016-12-07 24 views
3

我對元組符號略有困惑。元組中的每個元素都被當作元組來對待,還是作爲該元素的任何類型?元組元素,它們自己的元組?

例如,對於該元組t = (1,2,3,4)1 in tTrue,這意味着INT 1是在元組t

但是,如果我評估t[0:1],我們得到元組(1,)

更加混亂的是,(1,) in tFalse

這是怎麼回事?這是什麼;元組或元素是t的元素?

+0

顯然,'噸[0:1]'不返回t'的'的元素,但一個t'的' 「子元組」,這是爲什麼'(1,)在t'中是'False'。 – chepner

+0

您正在使用't [0; 1]'訪問元組的一個元素寬度的切片。這些片是元組,但元素仍然是以前的任何類型。 –

+3

元組的元素不是元組,而是* slice *。嘗試'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'>