我想写一个代码来扁平化使用递归的任何嵌套列表。这是第一个代码,我写道:如何把变量的空列表改变这个Python代码?
def flatten(NL):
a = []
for i in NL:
if type(i) == int:
a.append(i)
elif type(i) == list:
flatten(i)
return a
然而,它不停,直到我改变了代码,并把变量“a”外的函数返回一个空列表:
a = []
def flatten(NL):
for i in NL:
if type(i) == int:
a.append(i)
elif type(i) == list:
flatten(i)
return a
我曾尝试把我的思想包围起来无济于事。如何将功能外的空列表影响到它?
非常感谢你。读完你的回答后,我做了一些阅读,并看到每次递归调用都可以扩展。 ' 平铺(NL): 在NL A = [] 对于i: 如果(i)型== INT: a.append(ⅰ) elif的类型(I)==列表: 一个。 extend(flatten(i))#在这里,我们将拼合版本添加到一个而不是仅仅创建它。 return a ' – Taiwosam
是的。这绝对是一个更好的解决方案。但有一点需要注意:如果使用isinstance(i,list):'而不是'type(i)== list:'(与int相同),那么'list'的子类的实例仍然属于这一类。如果您发现我的答案有用,请考虑将其标记为正确答案。 – zondo