我有两个中等大小的 ascii 文件,其中包含固定格式的数据。我需要测试第一个文件的一行中的 6 个给定字段是否匹配(在给定的容差范围内)第二个文件的任何行上的六个字段,然后输出一个公共行以继续处理。
我目前正在使用 fortran 样式的行阅读器拆分文件中的每一行,并为每个列表中的每个元素生成一个具有正确类型的列表列表。我将两个文件中的列表列表存储在内存中,同时对它们进行操作
我需要比较的字段都是浮点数,我目前正在使用以下类型的流:
tol = 0.01
for entry1 in file1List:
for entry2 in file2List:
if (abs(entry1[1] - entry2[1]) < tol and abs(entry1[2] - entry2[2]) < tol
and abs(entry1[3] - entry2[3]) < tol and abs(entry1[4] - entry2[4]) < tol
and abs(entry1[5] - entry2[5]) < tol and abs(entry1[6] - entry2[6]) < tol):
print entry1,entry2
在只包含少量行的文件上执行此操作很好,但超过 30000 行仅此部分的执行时间超过 1 分钟!
我相当肯定必须有一个更快的比较方法,但我很难找到它,任何帮助将不胜感激。