gpt4 book ai didi

python - 为什么扁平化列表中的项目为空白

转载 作者:太空宇宙 更新时间:2023-11-03 14:02:28 24 4
gpt4 key购买 nike

我正在尝试使用递归函数来展平可能包含子列表项的已发送列表:

def myflatten(slist, outlist=[]):
for sl in slist:
if type(sl) == list:
outlist.append(myflatten(sl, outlist))
else:
outlist.append(sl)
return outlist

print("myflatten list=", myflatten([1,[5,6,7],3,4,[7,8,9]]))

输出:

myflatten list= [1, 5, 6, 7, [...], 3, 4, 7, 8, 9, [...]]

为什么每个子列表都得到 [...] 以及如何避免得到这个?感谢您的帮助。

最佳答案

现有答案很好地解释了为什么会出现 [...] 自引用,但他们对代码的建议修改对解决 default mutable argument gotcha 没有任何作用。它正等着咬你呢。

这是一个不需要 outlist 参数的解决方案:

def myflatten(slist):
outlist = []
for sl in slist:
if isinstance(sl, list):
outlist.extend(myflatten(sl))
else:
outlist.append(sl)
return outlist

print("myflatten list=", myflatten([1,[5,6,7],3,4,[7,8,9]]))

关于python - 为什么扁平化列表中的项目为空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47579110/

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