使用for / if在python中保持计数

时间:2016-02-03 00:29:34

标签: python python-2.7

我试图创建一个函数来查找某个项在函数中出现的次数。我有下面的代码,但它最终计算列表中的所有项目(6),而不仅仅是我想要的那个(在这种情况下为1)。我知道我没有回复任何东西,印刷品主要是为了让我看到我得到的答案。

def count(sequence, item):
    found = 0
    for i in sequence:
        if item in sequence:
            found = found + 1
    print found

count([1,2,1,2,4,5], 1)

6 个答案:

答案 0 :(得分:1)

试试这个

 def count(sequence, item):
        found = 0
        for i in sequence:
            if i == item:
                found = found + 1
        print found

    count([1,2,1,2,4,5], 1)

答案 1 :(得分:1)

您必须将sequence中的元素与item

进行比较
if i == item:

答案 2 :(得分:1)

您是否意识到此方法已存在?

return sequence.count(item)

例如,我们从

获得值2
my_list = [1,2,1,2,4,5]
print my_list.count(1)

好的,所以你想要一些更难的东西。 :-)这个怎么样?

return len([i for i in sequence if i == item])

答案 3 :(得分:0)

您可以使用sum和理解

def count(haystack, needle):
    return sum(el==needle for el in haystack)

这适用于您可以迭代的任何序列。

>>> s = {"a": None, "b": None, "c": None}
>>> count(s, "a")  # why are you counting a dict? You so crazy....
1

这是有效的,因为True可以强制转换为整数1。对一系列布尔值求和会导致序列中True s的计数。

答案 4 :(得分:0)

为了将来参考,python有一个很棒的Counter类,可以为你做这个。

from collections import Counter
someList = [1,2,1,2,4,5]
allCounts = Counter(someList) 
print allCounts[1]
print allCounts 

答案 5 :(得分:-2)

Python列出support this natively

>>> my_list = [1, 2, 1, 2, 4, 5]
>>> print my_list.count(1)
2