gpt4 book ai didi

python递归追加到列表

转载 作者:行者123 更新时间:2023-12-01 06:33:04 25 4
gpt4 key购买 nike

我试图在每次当前更改时将当前追加到 master 中。我使用列表失败。我已经能够修改字符串并 append 不同的字符串来掌握,但如果我可以使用列表,那就容易多了。

master = []

def recur(count,current):
count = count + 1
if (count == 5):
return
current.append(1)
master.append(current)
recur(count,current)


recur(0,[])

print(master)
# out put
# [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]

# what I expected
# [[1], [1,1], [1,1,1], [1,1,1,1]]

最佳答案

这就是你想要的:

master = []

def recur(count, current):
count += 1
if (count == 5):
return

new_current = current.copy()

new_current.append(1)
master.append(new_current)

recur(count, new_current)


recur(0, [])

print(master)

问题是 current 是对列表对象的引用...而不是实际的列表本身。因此,当您将 current append 到 master 时,您只是 append 了对同一列表对象的引用。因此,当您将新元素添加到 current 列表时,它会添加到所有引用都指向的一个列表中。

解决方案是采用copy current 列表来存储当时的状态。 copy 有不同类型- 深和浅。浅拷贝将复制列表对象,但不会复制其元素,如果您有一个列表列表,则深复制将递归遍历元素和任何子元素。

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

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