2015-10-12 52 views
0

有人可以解釋爲什麼以下是錯誤的?Tuple內Tuple返回False

x = (1, 2, (3, 'John', 4), 'Hi') 

print 3 in x 

是因爲3在另一個元組中嗎?但是,如果是這樣的話,是不是仍然在技術上數字3?

+0

這就是它的設計。沒有'3'不是'in x','(3,'John',4)'是'在x中。 – CoryKramer

+0

嘗試'print(3,'John',4)in x'。 '(3,'John',4)'實際上在'x'中:) –

+0

所以:是的,這是因爲3在另一個元組中。 – user2864740

回答

2

in運算符不會通過子元組遞歸搜索。從概念上講,in只是遍歷元組中的每個項目i,並檢查是否x == i。如果它檢查x in i以及x == i那麼它會找到3,但它不會那樣做。

2

x包含4個項目:整數1,整數2,元組(3, 'John', 4),字符串'Hi',所以整數3不在x

但是3 in x[2]True