在下面的示例代码中,我想要生成一个指示,表明预定义的数字列表是否与我正在循环的迭代匹配或不匹配.这是我的问题的简化示例.
不幸的是,我的代码不符合我的期望,可能我错过了一些简单的东西.在我的实际应用中,这是通过具有不同输出的极大的一维阵列来完成的,但是这以简单的文本方式展示了它,易于重现.
也许我还应该补充说我正在使用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)
运行时,输出:
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
而“正确”的输出应该是
[*]
[ ]
[*]
[*]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
解决方法:
使用in
而不是==:
if i in match:
实际上,你正在检查i(一个数字)到列表的值,而这两个不一样!