我有一个包含 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 次要好得多 - 这是一种昂贵的操作。
所以,我想我应该这样说,您应该尝试按顺序扫描“最昂贵”的数据集(可能不是最长的)。
关于python - (多少)在相互检查 2 个列表时先排序哪个重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12989519/