我创建的列表列表可能无限深度,例如:
[[[['Alpha'], ['Bravo']], ['Charlie']], [[['Delta'], ['Echo']], ['Foxtrot']]]
我想查看列表中的每个元素。 在任何级别上它总是一个左右的情况。
编辑:我创建这些列表列表的原因是:我发现它是记录元素之间父子关系的便捷方式。 扁平化在这种情况下不适用,因为它忽略了元素之间的关系。
感谢。
注意:这里有几个类似的问题,但我很确定这不是一个傻瓜
答案 0 :(得分:2)
由于flattening
列表不是一个选项,您可以遍历列表recursively
。
def traverse(l):
for i,ele in enumerate(l):
if len(ele)>1:
traverse(ele)
else:
print(ele)
traverse(l)
#driver values:
IN : l = [[[['Alpha'], ['Bravo']], ['Charlie']], [[['Delta'], ['Echo']], ['Foxtrot']]]
OUT :
['Alpha']
['Bravo']
['Charlie']
['Delta']
['Echo']
['Foxtrot']
如果你想要列表元素的深度 ,只需将功能更改为:
def traverse(l, depth):
for i,ele in enumerate(l):
if len(ele)>1:
traverse(ele, depth+1)
else:
print(ele, depth+1)
traverse(l, 0)
#driver values
OUT :
['Alpha'] 3
['Bravo'] 3
['Charlie'] 2
['Delta'] 3
['Echo'] 3
['Foxtrot'] 2