我觉得这段Python代码可以大大缩短,但我几乎总是倾向于回到编写C风格的布局。你认为缩短时间的最好方法是什么?可读性是一种奖励,而不是要求。在
def compfiles(file1, file2):
linecnt = 0
for line1 in open(file1):
line1 = line1.strip()
hit = False
for line2 in open(file2):
line2 = line2.strip()
if line2 == line1:
hit = True
break
if not hit:
print("Miss: file %s contains '%s', but file %s does not!" % (file1, line1, file2))
linecnt += 1
print("%i lines compared between %s and %s." % (linecnt, file1, file2))
fn = ["file1.txt", "file2.txt"]
compfiles(fn[0], fn[1])
compfiles(fn[1], fn[0])
如果文件的顺序是重复的,则迭代1
^{pr2}$您的代码效率极低,因为您
open
循环中的第二个文件迭代第一个文件。只需将第二个文件读入一个列表(或者更好的是,一个set
,它提供了平均O(1)
查找时间)并使用in
运算符。另外,您的linecnt
变量只计算file1中的行数-您可以将这些行读入一个列表中,然后调用该列表上的len
来获得相同的行数:相关问题 更多 >
编程相关推荐