gpt4 book ai didi

列表递归中的 Python3 列表

转载 作者:行者123 更新时间:2023-11-28 22:30:36 26 4
gpt4 key购买 nike

因此,我试图在不使用 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:])

但我想我遗漏了一个案例?如果有人知道这里出了什么问题,请解释:)

我尝试使用的第二种方法是这样的:

def countX(b, posn):
if posn == len(b):
return 0
else:
return countX(b, pos+1) + b(pos).count("X")

对于这种方法,我将在 posn 中输入 0但我也遇到了一个我不明白的错误……它说“列表”对象不可调用。这是什么意思?

我真的不想用更简单的方法来解决这个问题,我只是想知道为什么我尝试过的两种方法不起作用,以及我该如何解决它们。

提前致谢!

~编辑:并且不导入任何东西~

最佳答案

第二种方法,将b(pos)改为b[pos],使用[]获取列表项:

>>> b = [["X",2,4],[2,3,1],["X","X",1]] 
>>> def count_X(b, pos):
... if pos == len(b):
... return 0
... else:
... return count_X(b, pos+1) + b[pos].count('X')
...
>>> count_X(b,0)
3
>>>

关于列表递归中的 Python3 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42082082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com