Skip to main content
 首页 » 编程设计

python之(多少)在相互检查 2 个列表时先排序哪个重要

2025年05月04日11落叶无声

我有一个包含 800 个元素的列表,我在大约 50k 个文件中查找每个元素大约 50 行。 (这些是具有非通用名称的 xml 标签 - 搜索很简单,所以我没有使用 Beautiful soup。)

每找到一个元素,800 个元素的列表就会缩短。

遍历文件,

我先检查哪一行是否重要 - 针对所有可能的元素检查每一行(检查“spot”、“rover”、“fido”等行)或检查所有行检查一个元素一次(例如检查文件中的所有行是否为“spot”,然后检查所有行是否为“rover”等...)?

或者这一切在一起效率低下? (这是使用 python。) 我在想:

for line in somefile: 
        for element in somelist: 
              if re.search(element, line): 
                  .... 

或:

for element in somelist: 
        for line in somefile: 
              if re.search(element, line): 
                  .... 

请您参考如下方法:

您通常将较大的数据集保留为按顺序访问的数据集,并将您感兴趣的值保留在内存中或作为较大数据集的索引。所以,是的,这很重要,在您的示例中,您希望多次扫描文件,这要慢很多。

让我们举个例子,每个文件都是 50 行,而您有 800 个要查找的“单词”。

for filename in filenames: 
    for line in open(filename): 
        if any(word in line for word in words): 
            pass # do something 

由于 words 在内存中且易于扫描,因此它比打开每个文件 800 次要好得多 - 这是一种昂贵的操作。

所以,我想我应该这样说,您应该尝试按顺序扫描“最昂贵”的数据集(可能不是最长的)。