我有一種感覺,這個Python代碼可以大大縮短,但我幾乎總是傾向於回落到編寫C風格的佈局。在你看來,縮短它的最好方法是什麼?可讀性是獎金,而不是要求。縮短Python代碼
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])
如果代碼工作,正確的地方要問如何提高它在http://codereview.stackexchange.com/ –
你真的會打開相同的文件在C中一遍又一遍,沒有關閉它,或只是尋求開始?我以爲不是。在嘗試縮短它之前,我會嘗試找到一個更好的算法(不是O(n ** 2))。 –
@gnibbler:快速和骯髒的破解超過600行,緩存處理它,運行<1秒,n.p. :) –