首页 > 解决方案 > 在不使用 For 循环的情况下进行更快的迭代

问题描述

我有大量信息,我需要将它们作为节点存储在图表中;但是,它非常慢。这是有关功能和代码的信息,我怎样才能使它更快?(可能通过使用 numpy 或内置列表运算符?)

node_lines :字符串数组。数组中的每个元素都存储一个节点的信息,如下所示: ['5 7'] 这里第一个数字是节点 ID,第二个数字是节点的组 ID。node_lines 数组中的每个元素都由这些 id-group id 对作为字符串组成。

这是代码:

    for line in node_lines:

        info = line.split()
        id = int(info[0])
        group_id = int(info[1])

        node = n.Node(id, group_id) // Node initializer

        graph.nodes.append(node) // Adding the node to nodes array in the graph 
    
        if group_id> max_group_id: // This part is for finding the maximum group_id in the input
            max_group_id= group_id

所以,我在这里做的基本上是:对于每一行,提取 node_id 和 group_id 信息并将这个节点添加到图中。并且还在每次迭代中寻找最大的 group_id 以便我可以在迭代结束时找到组的总数。

让我们假设“节点”和“图形”类函数是有效的,我只是想改进这部分。

还有一个边缘信息部分,我也分享了阅读它的代码:

    for line in edge_lines:

        info = line.split()
        src = int(info[0])
        dst = int(info[1])

        edge = e.Edge(src, dst) // Initialization for edge class
        graph.edges.append(edge) // Adding edge to the graph

同样,在这一部分中,我有一个数组“edge_lines”,其中每个元素都包含一个字符串,例如 '5 7' 对应于边缘的“源”和“目标”。然后,将边添加到图中。

如何提高这两个代码的效率?我主要是在寻求一种更好的迭代方式,但我也愿意接受任何建议。

谢谢你。

标签: pythongraphiterationtime-complexityprocessing-efficiency

解决方案


推荐阅读