我想寫一個代碼來扁平化使用遞歸的任何嵌套列表。這是第一個代碼,我寫道:如何把變量的空列表改變這個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