2013-09-30 34 views
3

在我下面的示例代码中,我想产生一个预定义的数字列表是否匹配或不匹配我正在循环的迭代的指示。这是我的问题的一个简单例子。python中的循环中匹配整数

不幸的是,我下面的代码没有做我期待的事情,可能我错过了一些简单的东西。在我的真实应用中,这是通过具有不同输出的非常大的一维数组完成的,但是这以简单的文本方式演示,很容易重现。

也许我还应该补充一点,我使用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) 

运行时,它输出:

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

而 “正确” 的输出应该是

[*] 
[ ] 
[*] 
[*] 
[ ] 
[ ] 
[ ] 
[ ] 
[ ] 
[ ] 
+1

除了:'范围()'返回一个从零开始的列表,而不是一个为主。所以你的结果是:'[] [*] [] [*] [*]'。如果*希望* range()'返回一个基于列表的列表,请尝试:'range(1,volumes + 1)'。 –

+0

也许你应该在if语句之前加上'print i,match,i == match'。然后你会看到有什么问题...... – sloth

回答

5

使用in==

if i in match: 

因为它是,你很聪明将i(一个数字)的值作为一个列表,而这两个不会是相同的!

0

您正在比较整数i与列表匹配。当然他们不是平等的。尝试在中使用

3

iint值,而matchlist。他们永远不会相互对等。

in使用代替==这样的:

if i in match: 
    print "[*]"