我正在创建深度不受限制的列表列表,例如:
[[[['Alpha'], ['Bravo']], ['Charlie']], [[['Delta'], ['Echo']], ['Foxtrot']]]
我想了解列表中的每个元素在任何层面上,这总是一个左右的局面。
编辑:我创建这些列表的原因是:我发现这是记录元素之间父子关系的一种方便方法压扁在这种情况下不适用,因为它忽略了元素之间的关系。
谢谢。
注意:这里有几个类似的问题,但我很确定这不是一个欺骗
由于flattening
列表不是一个选项,因此可以遍历列表recursively
。
def traverse(l):
for i,ele in enumerate(l):
if len(ele)>1:
traverse(ele)
else:
print(ele)
traverse(l)
#驱动程序值:
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)
#驱动程序值
OUT :
['Alpha'] 3
['Bravo'] 3
['Charlie'] 2
['Delta'] 3
['Echo'] 3
['Foxtrot'] 2