gpt4 book ai didi

python - Python 中的递归和列表

转载 作者:行者123 更新时间:2023-11-28 22:00:35 25 4
gpt4 key购买 nike

这是我正在尝试做的事情的简化版本:

class a():
Requirement = 0
def func(self, oldlist, x):
newlist = [None]*3
newlist = oldlist
newlist[x] = b()
print "Class a"
g(newlist)


class b():
Requirement = 1


def g(list):
for i in range(3):
if list[i].Requirement==0:
list[i].func(list,i)

Initiallist=[None]*3
Initiallist[0]=a()
Initiallist[1]=b()
Initiallist[2]=a()
g(Initiallist)

我没有尝试用文字表达我的期望,而是制作了一些图表来表达我认为应该发生的事情:

enter image description here

这意味着类 a 中的函数应该被调用 4 次。然而,它只被调用了 2 次,所以看起来是这样的:

enter image description here

我不明白为什么会这样或者我应该如何解决它。

最佳答案

不确定,但我认为你的问题是这一行:

newlist = oldlist

我想你想复制列表(而不是改变 oldlist),所以你应该简单地使用:

newlist = oldlist[:]

所以将func改成

def func(self, oldlist, x):
newlist = oldlist[:]
newlist[x] = b()
print "".join(x.__class__.__name__ for x in newlist)
g(newlist)

打印

bba
bbb
abb
bbb

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

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