2015-07-20 84 views
0

我的函數檢查列表中第一個元素具有多少個重複項。計算列表中重複項目的數量時返回錯誤的值

def duplicate(lst): 
count=0 
length = len(lst) 

    for i in range(1,length): 
     if lst[0]== lst[i]: 
      count+=1 
      print [(lst[i]),count] 

例如:

duplicate(["hello", "hello","hello", "yes", "no"])=>['hello',2] 

上述工作正常,但是說,我只是想存儲的數值爲「計數」,我調整我的代碼下面,總是返回值1對於代替2正確「計數」「計數」,使用前面的例子:

def duplicate(lst): 
count=0 
length = len(lst) 

for i in range(1,length): 
    if lst[0]== lst[i]:    
     count+=1 
     return count 

我知道那裏是做這個用集(更簡單的方法),但是我想知道我在哪裏在我的For Loop中錯了當累計變量'count'的值時。

+0

看看[這個例子](http://stackoverflow.com/questions/15735406/converting-word-frequency-to-a-graphical-histogram-in-python)關於將詞頻轉換爲直方圖。看起來,創建一個單詞直方圖的過程與對列表中的重複項進行計數的過程非常相似,但我不確定多少適合您正在做的事情。 – Matt

回答

2

您正在返回循環內的值。你需要縮寫return語句。你的循環只執行一次。

+0

我做了這樣的退回,以便返回與'if'內聯,但它仍然只返回1. @patrick – mista619

+0

@ mista619您需要將它縮小到另一個級別。它需要與'for'保持一致。你只是將它移出'if'語句。你應該把它完全移出循環。 – River

+0

@河感謝你。 – mista619