我正在尝试定义一个带有两个输入的函数,一个列表和一个项目(可以是一个字符串,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循环应该照顾它。
有什么建议吗?
答案 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从序列。你忽略了它。