2015-07-20 87 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