这个问题在这里已有答案:
我有一组元素,其中嵌套了多个其他元素 . 我试图通过递归提取所有这些,因为我不知道嵌套的深度是多少 . 为了比较这个更加pythonic的东西我想说想象一个元素列表 . 该列表上的每个项目可以是单个值或另一个元素列表 . 然后,对于每个子列表,可以存在单个值或更多子列表 . 我想要浏览所有这些元素并从所有列表中提取每个元素,直到最后一个子列表上只有单个项目 .
lst = [1,[[2,3,4],[5,6,7]],[[8,9,10],[[11,12,13],[14,15,16]]],17,18]
for i in lst:
subElem = i.GetSubComponentIds()
if subElem.Count >= 1:
idsList.append(subElem)
for i in subElem:
subElem2 = i.GetSubComponentIds():
if subElem2.Count = >= 1:.... and so on
如何设置一个递归函数,它将获取输入列表中的每个元素,并在其上运行GetSubComponentIds()函数(要么返回另一个列表,要么不返回任何内容) . 如果返回是一个列表,则在该子列表的每个项目上运行相同的函数GetSubComponentsIds(),直到您得不到任何回报 . 同时对于那些没有返回的人我想要附加的Id . 因此,如果我使用上面示例中的lst,我将得到所有元素1-18的列表(唯一的技巧是我不知道原始列表中每个元素的深度有多少个子列表) .
2 回答
据我了解,您希望使用递归来提取隐藏在某个嵌套对象中的元素 . 这是一种方法:
在您的样本列表上运行:
请参阅以下使用常规列表的代码:
请将其更新为使用您的功能