3

在下面的示例代码中,我想指示预定义的数字列表是否匹配或不匹配我正在循环的可迭代对象。这是我的问题的简化示例。

不幸的是,我下面的代码并没有达到我的预期,并且可能我遗漏了一些简单的东西。在我的实际应用程序中,这是通过具有不同输出的非常大的一维数组来完成的,但这以一种易于复制的简单文本方式进行了演示。

也许我还应该补充一点,我正在使用 Python 2.7.5。

match = [1, 3, 4]
volumes=10

def vector_covariates(match, volumes):
    for i in range(volumes):
        if i == match:
            print "[*]"
        else:
            print "[ ]" 

vector_covariates(match, volumes)

运行时,它输出:

 [ ]
 [ ]
 [ ]
 [ ]
 [ ]
 [ ]
 [ ]
 [ ]
 [ ]
 [ ] 

而“正确”的输出应该是

 [*]
 [ ]
 [*]
 [*]
 [ ]
 [ ]
 [ ]
 [ ]
 [ ]
 [ ]
4

3 回答 3

5

in不使用==

if i in match:

实际上,您正在检查i(一个数字)的值到一个列表中,而这两个不会是相同的!

于 2013-09-30T14:00:38.263 回答
3

i是一个int值,match而是一个list。他们永远不会平等。

使用in而不是==这样:

if i in match:
    print "[*]"
于 2013-09-30T14:03:16.667 回答
0

您正在将整数i与列表match进行比较。当然他们不是平等的。尝试.

于 2013-09-30T14:01:35.100 回答