2015-10-12 30 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