gpt4 book ai didi

python - 为什么我不能修改作为函数内部参数传递的列表?

转载 作者:行者123 更新时间:2023-12-04 16:54:11 25 4
gpt4 key购买 nike

这是上下文。我有一个这样定义的树结构:

class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None

我正在尝试使用函数 find_x 递归地遍历树.该函数依赖于一个列表 to_do这是作为参数传递的。
x = defaultdict(lambda:[])

def find_x (x, to_do):
next_to_do = []

for node, n in to_do:
x[n].append(node.val)

if node.left:
next_to_do.append((node.left, n - 1))

if node.right:
next_to_do.append((node.right, n + 1))

to_do = next_to_do

to_do = [(root, 0)]
while to_do:
find_x(x, to_do)

当我运行我的函数时,我看到 to_do没有更新。我明白,如果我想要 to_do要更新,我要改 find_x并将最后一行替换为 return next_to_do我需要更改 while 的内部循环进入 to_do = find_x(x, to_do) .

我的问题是这个。由于我的名单 to_do是一个可变对象,因为它是在函数之外定义的 find_x ,函数 find_x应该可以修改。为什么不是这样?

谢谢你的帮助!

最佳答案

您正在创建一个新变量 to_do在您的函数内部 find_x ,您可以使用:

to_do[:] = next_to_do

关于python - 为什么我不能修改作为函数内部参数传递的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61028296/

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