在Python中计算列表的元素

时间:2013-03-19 23:58:35

标签: python for-loop counting

我正在尝试定义一个带有两个输入的函数,一个列表和一个项目(可以是一个字符串,int,float),它返回该项目在列表中出现的次数。这是我的代码:

def count(sequence,item):
    for all x in sequence:
        if x != item:
            while x in sequence:
                sequence.remove(x)
    return len(sequence)

但是,这只删除不等于序列中项目的第一个元素并删除它。例如,count([4,8,3],3)返回2,因为它只从列表中删除4。我认为for循环应该照顾它。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

这很简单,使用count方法:

the_list.count(the_item)

来自文档:

  

list.count(x)返回x出现在列表中的次数。

例如:

[1, 2, 3, 1, 4].count(1)
=> 2

顺便说一下 - 我不明白,你为什么要删除中一​​个应该简单计算它们的函数的元素?

答案 1 :(得分:0)

迭代列表并更改此列表的长度(使用remove())时很危险

在你的情况下, 当您迭代列表'序列'时,首先您将获得序列[0](即4)。你删除它。然后,你将得到序列[1]。你假设序列[1]是8.但是,因为你之前删除了4,现在序列[0]是8而序列[1]是3.所以你得到的不是8但是3.这就是为什么你不能删除8从序列。你忽略了它。