2013-03-19 38 views
1

我想定义一个函数,它需要两个输入,一个列表和一个项目(可以是一个字符串,int,float),它返回项目出现在列表中的次数。这是我的代码:Python中的列表中的元素计数

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循环应该考虑到这一点。

有什么建议吗?

回答

3

它是如此简单,使用count方法:

the_list.count(the_item) 

从文档:

list.count(x)返回时间X的号码出现在列表中。

例如:

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

顺便说一句 - 我不明白,你为什么在是应该简单地计算它们的功能删除元素?

0

当你遍历一个列表,并改变这个列表的长度是危险的(你使用删除())

在你的情况, 当你迭代列表“序”,一开始你会得到序列[0](即4)。然后你删除它。然后,你会得到序列[1]。你假设序列[1]是8.但是,因为你之前删除了4,现在序列[0]是8,序列[1]是3.所以你得到的不是8,而是3.这就是为什么你不能删除8顺序。你忽略它。