【发布时间】:2017-06-24 05:43:46
【问题描述】:
所以我试图在不使用 for 循环的情况下计算某个事物(例如,“X”)在列表中出现的次数。所以我尝试了两件事:
例如:b = [["X",2,4],[2,3,1],["X","X",1]] 和 countX 应该返回 => 3
我第一次尝试这个:
def countX(b):
if b == []:
return 0
elif b[0] == []:
return countX(b[1:])
elif b[0][0] == "X":
return countX(b[0][1:]) + 1
else:
return countX(b[0][1:])
但我认为我错过了一个案例?如果有人知道这里出了什么问题,请解释:)
我尝试使用 count 的第二种方法是这样的:
def countX(b, posn):
if posn == len(b):
return 0
else:
return countX(b, pos+1) + b(pos).count("X")
对于这种方法,我会在 posn 中输入 0 但我也遇到了一个我不明白的错误......它说“列表”对象不可调用。这是什么意思?
我真的不想要一个更简单的方法来解决这个问题我只是想知道为什么我尝试过的两种方法都不起作用以及如何解决它们。
提前致谢!
~edit: 并且不导入任何东西~
【问题讨论】:
-
b(pos)这应该是b[pos]
标签: python list python-3.x recursion