我有以下 python 嵌套列表结构:
test = ['a', ['c', ['e'], 'd'], 'b']
或者相同,只是格式化:
test = [
'a',
[
'c',
[
'e'
],
'd'
],
'b'
]
我想知道遍历完整列表的最佳方法是什么,从最内层的嵌套列表对象 ('e') 开始到最外层的列表 ('a', [...], 'b')以相反的顺序。对 reversed(test) 的调用并不能解决嵌套列表的问题。它应该能够在迭代的每个深度调用回调函数。
迭代应该看起来像这样([xx] == 来自先前调用的回调的计算值):
1st e --> callback(e)
2nd c [e] d --> callback(c [e] d)
3rd a [c e d] b --> callback(a [c e d] b)
希望这能解释我的问题,感谢您的帮助
最佳答案
您正在寻找的是结构的后序遍历:
def traverse(l):
for x in l:
if isinstance(x, list):
traverse(x)
callback(l)
如果callback
定义为print
,我们得到
['e']
['c', ['e'], 'd']
['a', ['c', ['e'], 'd'], 'b']
关于python - 由内而外迭代嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14960380/