想写一个递归,能够“融化”一个 list。比如[1,[2,3]]变成[1,2,3]。 完成代码如下:
def list_melt(lst, new_lst=[]):
for element in lst:
if not isinstance(element, (tuple,list)):
new_lst.append(element)
else:
list_melt(element, new_lst)
return new_lst
测试结果是,第一次使用这个函数可以得到想要的结果,但第二次开始结果会被叠加,也就是默认的 new_lst 参数会跟在上一次测试的结果后面。 比如说,第一次传入[1,[2,3]]变成[1,2,3],第二次传入[[4,5],6]会变成[1,2,3,4,5,6]。请问为什么默认参数会失效?谢谢。