2012-03-06 31 views
0

下面是我遇到問題的代碼區域。 T1和T3是列表的兩個列表:搜索列表中是否存在值時出現奇怪的結果

for num in T1: 
    print num 
    print T3[0] 
    print type(num) 
    print type(T3[0]) 
    if num == T3[0]: 
     print 'they are the same!' 
    else: 
     print 'nope they are not!' 
    if T3.index(num): 
      print 'number exists in list!' 

這裏的結果:「!在列表中存在數」

[0, 0] 
[0, 0] 
<type 'list'> 
<type 'list'> 
they are the same! 

的數值和類型是相同的,但是當我看不到當我在命令行上測試list_name.index(value)時,它可以工作,但不在這裏。我究竟做錯了什麼?

回答

4

方法list.index()返回列表中參數的索引,並且如果找不到參數則產生ValueError。檢查

if T3.index(num): 

基本測試,如果參數的指標是不爲零,但它恰好是零在你的榜樣,所以檢查失敗。您可能想要測試項目是否包含在列表中 - 使用

if num in T3: 

爲此目的。

+0

謝謝你,它完美的工作。只需要提一下,我試圖簡化這個例子,但是T3.index(num)語句實際上被包裝在一個try語句中。我知道Try的流量控制並不好,你的方式實際上給我一種我不需要使用它的方式。謝謝你,你教了我兩件事(以一件爲代價)。 – 2012-03-06 15:09:15

0

的問題是在這行代碼:

if T3.index(num): 
      print 'number exists in list!' 

列出的index()方法做到這一點:「返回索引中的第一項,其值是x的名單這是一個錯誤,如果存在。是不是這樣的項目。「

在您的列表中,要查找的第一個值(0)位於索引0處。if語句將零值視爲False,並且不做任何事情。