我想从Python中的n个嵌套列表中检索数据。那就是:
[[[[[1, 2]]]]] => [1, 2]
我显然可以做类似的事情:
mylist[0][0][0][0]
但是我想知道是否有一种方法可以不必知道列表嵌套的深度。
我想这样做是因为我从需要处理的REST API请求中获得了一些格式错误的数据。
答案 0 :(得分:2)
您可以使用递归生成器从嵌套列表中产生元素:
from typing import Collection
def check_nested(obj):
for sub_obj in obj:
# tuples, lists, dicts, and sets are all Collections
if isinstance(sub_obj, Collection):
yield from check_nested(sub_obj)
else:
yield sub_obj
l = [[[[[1, 2]]]]]
list(check_nested(l))
[1, 2]
# This will work for other formats
l = [[[[[1, 2]]]], [[3, 4]]]
list(check_nested(l))
[1, 2, 3, 4]