想写一个递归,能够“融化”一个 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]。请问为什么默认参数会失效?谢谢。
1
conn4575 2018-03-20 15:18:05 +08:00 via Android 3
python 里面的经典误区之一,默认参数不能是可变类型,因为默认参数只在函数定义时注册一次。具体可以问谷歌
|
2
s3040608090 OP @conn4575 解释得很清楚了,非常感谢!
|