Can';我似乎不明白为什么这不会';不行。python初学者

Can';我似乎不明白为什么这不会';不行。python初学者,python,python-2.7,Python,Python 2.7,我试图遍历一个列表,每次在列表中找到一个项目时,它应该递增1。例如:count([1,2,1,1],1)应该返回3(因为1在列表中出现了3次) 您要测试是否相等: 相反,您使用in运算符测试包含,但对整数使用in会引发异常: >>> item = 1 >>> 1 in item Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeErr

我试图遍历一个列表,每次在列表中找到一个项目时,它应该递增1。例如:count([1,2,1,1],1)应该返回3(因为1在列表中出现了3次)

您要测试是否相等:

相反,您使用
in
运算符测试包含,但对整数使用
in
会引发异常:

>>> item = 1
>>> 1 in item
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument of type 'int' is not iterable
因此,您的
for
循环甚至不会运行,因为再也没有什么可循环的了。工作代码将改为:

def count(sequence, item):
    found = 0
    for i in sequence:
        if i == item:
            found += 1
    return found
请注意,列表对象有一个专门的方法来计算匹配元素的数量,
list.count()


Martijn Pieters的回答加上删除行
sequence=[]
。您正在覆盖您的参数。

列表对象已经有了一个计数方法,它可以完全满足您的要求:

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

如果您有自己的自定义对象集合,请确保在类定义上实现了
\uuuuu eq\uuuu
方法

一定要尝试提出一个实际的问题标题,因为它现在没有告诉我们您在问什么。你忘了告诉我们发生了什么(例如,你得到了一个
TypeError
异常,带有完整的回溯),或者无论我传入什么,它总是返回0。你为什么要将序列设置为空?令人惊讶的是,我实际上已经尝试过了。它在这里。计数(序列,项):序列=[]为序列中的i找到0:如果i==项:找到+=1返回found@user2626734:是的,如果你真的包括了对实际发生的事情的描述,我早就看到了
序列=[]
了。我的错。我也是这个网站的不速之客。这是我得到的错误。我在codeacademy上做这件事。哎呀,再试一次。您的函数在计数时失败([4,'foo',5,'foo'],5)。当它应该返回1时,它将返回0。@user2626734:您可以编辑您的问题以添加该信息。谢谢大家的帮助。在我停止犯这些错误之前,你认为我需要做python多长时间,因为它们真的很烦人。
sequence = []
def count(sequence, item):
    found = 0
    for i in sequence:
        if i == item:
            found += 1
    return found
>>> sequence = [1, 2, 1, 1]
>>> sequence.count(1)
3
a = [1,1,2,3,4,1,4]
a.count(1) #3
a.count(4) #2