如何打印元素出现在Python列表中的次数?

时间:2014-04-23 14:52:28

标签: python list

我有两个变量,x和y,其中x是数字,y是数字列表。

我必须定义一个函数 count ,它确定x在y中出现的次数, 例如,

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

应该返回2。

提前感谢您的建议。

NB。我不允许使用内置计数功能,即y.count(x)。

3 个答案:

答案 0 :(得分:5)

您可以使用生成器表达式和sum这样的函数

sum(item == x for item in y)

你可以把它放在一个函数中,比如这个

def counter(my_list, key):
    return sum(item == key for item in my_list)

assert counter([2, 1, 3, 1, 4], 1) == 2
assert counter([2, 1, 3, 1, 4], 5) == 0
assert counter([2, 1, 3, 1, 4], 2) == 1

这是有效的,因为在Python中,布尔值是整数的子类。因此,True将被视为1False将被视为0。在我们的例子中,我们从my_list中取出每个元素并检查它是否等于key。如果它们相等,则评估为1,否则为0。然后我们sum整个结果。

答案 1 :(得分:3)

它已内置于Python:

>>> from collections import Counter
>>> Counter([2,1,3,1,4])[1]
2

如果你想这样做" long"方式,使用字典:

d = {}
for i in [2,1,3,1,4]:
    d.setdefault(i, 0)
    d[i] += 1
print(d[1])  #  prints 2

答案 2 :(得分:2)

为什么不使用循环:

def count_occurences(num, lst):
    return len([i for i in lst if i==num])

    #or return sum(1 for i in lst if i==num)

>>> print count_occurences(1, [2,1,3,1,4])
2