-1
我正在嘗試使用此代碼來壓扁我的列表。通過扁平化我的意思是將像'int'對象不是可下載的(試圖壓扁列表)?
[1,[2], [[[[3]]]],4]
列表爲
[1,2,3,4]
這裏是我的代碼
i = 0
def flatten(aList):
'''
aList: a list
Returns a copy of aList, which is a flattened version of aList
'''
global x
x = []
def check(L):
global i
if type(L[i]) != list:
x.append(L[i])
i += 1
return check(aList[i])
else:
return check(L[i])
return check(aList)`
,我不斷收到此錯誤
Traceback (most recent call last):
File "<ipython-input-87-ee05c7b1d059>", line 1, in <module>
flatten(l)
File "/Users/ashwin/.spyder-py3/untitled1.py", line 20, in flatten
return check(aList)
File "/Users/ashwin/.spyder-py3/untitled1.py", line 18, in check
return check(L[i])
File "/Users/ashwin/.spyder-py3/untitled1.py", line 16, in check
return check(aList[i])
File "/Users/ashwin/.spyder-py3/untitled1.py", line 13, in check
if type(L[i]) != list:
TypeError: 'int' object is not subscriptable
這是什麼我需要改變?
這應該如何工作?你爲什麼使用全局的'x'?你爲什麼使用全局的'i'?你爲什麼在一個情況下調用'check(aList [i])'而在另一個情況下調用(L [i])''? – khelwood
它看起來像'check()'是遞歸的,但它不能是因爲沒有基本的情況下,你只是返回。 (加全局和遞歸不能很好地混合)。 – quamrana
關於這個問題有多個問題,你之前做過搜索嗎?我們解決SO問題,而不是代碼評論。很好的例子! :) –