ID番号を含むリストがあります。リストの一部の要素は別のリストです。ネストされたリストを単一のリストに変換するために、collectionsモジュールを使用して再帰関数を記述します。
私のコードは以下の通りです。
from collections import Iterable
def single_list(list):
for item in list:
if isinstance(item, Iterable):
yield from single_list(item)
else:
yield item
Item_list = [10,20,[30,40],[50,'Null',70],100]
items_single=single_list(Item_list)
for item in items_single:
print(item)
プログラムを実行すると、次のエラーメッセージが表示されます。
Traceback (most recent call last):
File "/Research/SoftDev/SEPJ/StackOverflow_qs.py", line 42, in <module>
for i in items_single:
File "/Research/SoftDev/SEPJ/StackOverflow_qs.py", line 36, in single_list
yield from single_list(item)
File "/Research/SoftDev/SEPJ/StackOverflow_qs.py", line 36, in single_list
yield from single_list(item)
File "/Research/SoftDev/SEPJ/StackOverflow_qs.py", line 36, in single_list
yield from single_list(item)
[Previous line repeated 986 more times]
File "/Research/SoftDev/SEPJ/StackOverflow_qs.py", line 35, in single_list
if isinstance(item, Iterable):
File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/abc.py", line 184, in __instancecheck__
if subclass in cls._abc_cache:
File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_weakrefset.py", line 75, in __contains__
return wr in self.data
RecursionError: maximum recursion depth exceeded in comparison
Process finished with exit code 1
エラーの修正方法がわかりません。
mpu.datastructures.flatten(yourlist)
問題の解決策として参照してください。実装も確認できます。