【发布时间】:2014-11-22 12:17:16
【问题描述】:
如何优化此代码。我想从文件中删除重复的行,但认为如果效率低下使用该集合,并且会限制我可以解析的文件的大小。
file = open("sample.txt")
output = []
alreadyseen = set()
while True:
lines = file.readlines(100000)
if not lines:
break
for line in lines:
pass # do something
if line not in alreadyseen:
output.append(line)
alreadyseen.add(line)
print(output)
【问题讨论】:
-
文件有多大?二叉搜索树(它会给你 Log N 查找)怎么样?或者,如果行已排序,您可以迭代并只记住前一行...?
-
如果它都适合内存,那么您在这里所拥有的技术可能是最佳的。如果您对一种即使不适合也有效的方法感兴趣,请直说。
-
你关心行的顺序吗?
-
@erewok 一个集合是基于散列的,给出 O(1) 查找与 O(log n) 的树。
-
如果文件适合内存,那么您的方法似乎没问题。如果没有,那么您可以查看这个问题:stackoverflow.com/questions/22623472/…
标签: python