“ 树 </跨度> “结构化清单:
[(1,1,(1,1,(1, “1”))),(1,1,1),(1,),1,(1,(1,( “1”)))] #可能更复杂
如何遍历它并打印每个项目 - 我的意思是1和“1”?如何生成具有相同结构的类型列表?
[( ‘INT’, ‘INT’,( ‘INT’, ‘INT’,( ‘INT’,” 海峡 </跨度> ‘))),(’ INT ‘ ‘INT’, ‘INT’),( ‘INT’,), ‘INT’,( ‘INT’,( ‘INT’,(’ 海峡 </跨度> “)))]
‘int’,‘ 海峡 </跨度> ’这里应输出类型(1)和类型(“s”),因为它不能显示在问题上
谢谢!
您可以使用递归轻松地遍历任何树状结构。只需定义一个可以查看所有孩子的函数。虽然传统上,每个孩子本身就是一棵树,但在你的情况下,它 威力 是。所以我想你可以这样做:
def traverseit(tree): if hasattr(tree, '__iter__'): for subtree in tree: traverseit(subtree) else: print(tree)
def transformit(tree): nodetype = type(tree) if hasattr(tree, '__iter__'): return nodetype(transformit(subtree) for subtree in tree) else: return nodetype
对于#2,您可以使用此递归lamba函数并在地图中使用它
f = lambda o: (isinstance(o, tuple) and tuple(map(f, o))) or type(o).__name__ map(f, [(1,1,(1,1,(1,"1"))),(1,1,1),(1,),1,(1,(1,("1")))])
收益: [('int','int',('int','int',('int','str'))),('int','int','int'),('int', ),'int',('int',('int','str'))]