【发布时间】:2020-12-07 07:52:54
【问题描述】:
def flatten(data):
output=[]
for item in data:
if type(item)==list:
flatten(item)
#Correct code: output += flatten
else:
output.append(item)
return output
example=[[1,2,3],[4,[5,6]],7,[8,9]]
print("before:",example)
print("after:",flatten(example))
我不知道为什么我的代码是错误的。 调用递归函数的时候不是又调用了输出列表吗? 在执行我编写的代码时,是否会连续调用空输出列表? (输出列表每次调用都会经过初始化的过程吗?)
【问题讨论】:
-
这可以使用列表理解来完成,但我认为这没有任何意义?
-
将
type(item)==list行更改为isinstance(item, list)bcoz 这是在python中检查数据类型的方法
标签: python list function recursion