2015-04-21 43 views
1

任何人都可以解釋什麼是在這個代碼布萊恩?Python:搜索到列表失敗

def some_function(value): 
    my_list = [value, [True, "Some text"]] 

    if True in my_list: 
     return "yes" 
    else: 
     return "no" 

>>> print(function(1)) 
yes 

>>> print(function("1")) 
no 

值= 1,我得到了 「是」,這種行爲是正確的。但如果值是一些字符串,結果是「否」。我認爲這應該永遠是「是」。我用Python3.4

+1

@Tichodroma:標題編輯錯了 - 問題說_ _「」值= 1,我得到了「是」,這種行爲是正確的「_,暗示問題的問題不是爲什麼1 == True' – Eric

+0

@Eric 。同意。但目前的標題也是錯誤的。該清單與問題無關。 –

+1

'True'不在'my_list'中,而是在'my_list [1]'中。 –

回答

3

記住

1 == True 
"1" != True 

所以它的情況是

[1, [True, "Some text"]] 

包含True,而

["1", [True, "Some text"]] 

沒有。

編輯:子列表包含True無關緊要。

+0

哦,是的,我知道了!謝謝。 – ilya

2

您的列表包含兩項 - value[True, "Some text"]

value1value等於True,所以結果是yes

value'1',既不這兩個項目都等於True,所以結果是no


這聽起來像你認爲x in list應該看所有的子列表 - 這不是案件

+0

噢,我在那裏列出所有元素:_value,True和「一些文本」_並且在控制檯中應該是「是」,因爲_True_在元素中。 – ilya

+0

@ rec99:沒有。在[1,[True,3]中爲真]是錯誤的,但在[1,True,3]中爲真[ – Eric

+0

]我明白了,謝謝! – ilya