2013-09-30 33 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 "[*]"