搜索列表中是否存在值时出现奇怪的结果

时间:2012-03-06 15:01:38

标签: python

这是我遇到问题的代码区域。 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)时它可以工作但不在这里。我做错了什么?

2 个答案:

答案 0 :(得分:4)

方法list.index()返回列表中其参数的索引,如果找不到参数,则引发ValueError。检查

if T3.index(num):

基本上测试参数的索引是否为非零,但在您的示例中恰好为零,因此检查失败。您可能想测试该项是否包含在列表中 - 使用

if num in T3:

为此目的。

答案 1 :(得分:0)

问题在于这行代码:

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

列表的index()方法执行此操作:“返回值为x的第一个项目列表中的索引。如果没有此类项目,则会出错。”

在列表中,要查找的第一个值(0)位于索引0. if语句将零值视为False,并且无法正常执行任何操作。