-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])'を呼び出し、別のケースで 'check(L [i])'を呼び出すのはなぜですか? – khelwood
'check()'は再帰的ですが、あなたが戻っただけの基底ケースがないので、それはできません。 (プラスのグローバルと再帰はあまりうまくミックスされません)。 – quamrana
これについて何度も質問があります。以前に検索しましたか?コードレビューではなく、SOの問題を解決します。良い例だけど! :) –