count([5,2,1,'5',9,5,True],1)
将显示2,因为它将True
视为1.我如何更改主代码,以便当我想检查序列中有多少1时,它将只返回1。
这是我的主要代码
def count(L,x):
k = 0
for i in L:
if x == i :
k+= 1
return k
答案 0 :(得分:1)
您可以将x == i
更改为x is i
。
>>> x = True
>>> y = 1
>>> x == y
True
>>> x is y
False
答案 1 :(得分:1)
只需在支票上添加isinstance
:
def count(L,x):
k = 0
for i in L:
if not isinstance(i, bool) and i == x:
k+= 1
return k
或明确过滤i is not True
。 I.e if i is not True and i == x: