python - 在不使用 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' 对应于边缘的“源”和“目标”。然后,将边添加到图中。
如何提高这两个代码的效率?我主要是在寻求一种更好的迭代方式,但我也愿意接受任何建议。
谢谢你。
解决方案
推荐阅读
- r - r 在data.table中按组评估条件以过滤行,数据结构:data.tables列表
- git - 如何使用 wget 从我的私人 github 存储库下载发布 jar?
- gradle - 在依赖项解析期间,多个构建操作因 StackOverflowError 失败 - 如何调试?
- node.js - 使用 expressjs 和 httpd 反应路由器不起作用
- go - 带有客户端 Go 资源的 MarshalYAML
- sql - ACCESS 按每个组的 COUNT 选择前 10 条记录
- c# - 从多个问题中确定正确答案
- css - 将多个 CSS 文件转换为 SASS / SCSS
- git - 如何使用 Github API 从已合并到 master 的分支中获取 PR 信息?
- visual-studio - devenv.exe /upgrade 未按预期工作