2012-03-06 33 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,并且不做任何事情。