python类的树解析及其应用

2024-04-19 10:43:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图减少节点子结构中表示的数据文件。数据格式如下所示:

({[地理节点A,地理节点B,地理节点C],地理节点D},{地理节点E,地理节点F},地理节点G)

其中GeoNode是python对象。我试图在某个方案中应用两个操作来遍历树。第一种方法将当前“级别”中的所有地理节点转换为网格。第二步将合并网格,最后只剩下一个网格。在

以上示例中的步骤如下所示。在

  1. ({[Mesh A,Mesh B,Mesh C],GeoNode D},{GeoNode E,GeoNode F},GeoNode G)
  2. ({Mesh ABC,GeoNode D},{GeoNode E,GeoNode F},GeoNode G)
  3. ({Mesh ABC,Mesh D},{GeoNode E,GeoNode F},GeoNode G)
  4. (网格ABCD,{GeoNode E,GeoNode F},GeoNode G)
  5. (网格ABCD,{Mesh E,Mesh F},GeoNode G)
  6. (网格ABCD,网格EF,GeoNode G)
  7. (网格ABCD,网格EF,网格G)
  8. 网格ABCDEFG

目前,我将数据结构表示为包含GeoNodes的嵌套python列表。我能够以深度优先的方式遍历树并打印结构。我不清楚的是,当我确定自己目前在[Mesh A,Mesh B,Mesh C]时该怎么做。我可以很容易地使网格ABC,但那又怎样?如何确保它与geonoded匹配并向上传播。在

这类似于尝试求值((1+1)+2+(3+5)),但也将每个int转换为float。但是对于我的例子,我处理的是这些类,而不是float和int。在Python或独立于语言的示例中,是否有实现这一点的现有方法?在


Tags: 方法网格示例节点数据文件float地理int
1条回答
网友
1楼 · 发布于 2024-04-19 10:43:56

必须使用递归转换函数自下而上工作。在

def transform(s):
    ''' Receives a GeoNode structure as nested lists and returns a Mesh.
    '''
    if isinstance(s, list):
       return merge_meshes([transform(e) for e in s])
    else:
       assert isinstance(s, GeoNode)
       return geonode_to_mesh(s)

相关问题 更多 >