Python:高效計算大文件中的最長行的長度


在操作某個很多進程都要頻繁用到的大文件的時候,應該盡早釋放文件資源(f.close())

前2種方法主要用到了列表解析,性能稍差,而最后一種使用的時候生成器表達式,相比列表解析,更省內存

列表解析和生成器表達式很相似:

列表解析

[expr for iter_var in iterable if cond_expr]

生成器表達式

(expr for iter_var in iterable if cond_expr)

 方法1:最原始

longest = 0
f = open(FILE_PATH,"r")
allLines = [line.strip() for line in f.readlines()]
f.close()
for line in allLines:
    linelen = len(line)
    if linelen>longest:
        longest = linelen

方法2:簡潔

f = open(FILE_PATH,"r")
allLineLens = [len(line.strip()) for line in f]
longest = max(allLineLens)
f.close()

缺點:一行一行的迭代f的時候,列表解析需要將文件的所有行讀取到內存中,然后生成列表

 方法3:最簡潔,最節省內存

f = open(FILE_PATH,"r")
longest = max(len(line) for line in f)
f.close()

或者

print max(len(line.strip()) for line in open(FILE_PATH))

參考資料:Python核心編程(第8章)

原文地址:曾是土木人

轉載請注明出處:http://www.cnblogs.com/hongfei/p/3768207.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM