亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python高級(jí)應(yīng)用實(shí)例對(duì)比:高效計(jì)算大文件中的最長(zhǎng)行的長(zhǎng)度

 更新時(shí)間:2014年06月08日 09:42:58   作者:  
在操作某個(gè)很多進(jìn)程都要頻繁用到的大文件的時(shí)候,應(yīng)該盡早釋放文件資源(f.close()),只有這樣才能算是一則高效率的代碼,下面我們就來分析下這3種方法的優(yōu)劣

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

列表解析和生成器表達(dá)式很相似:

列表解析

[expr for iter_var in iterable if cond_expr]

生成器表達(dá)式

(expr for iter_var in iterable if cond_expr)

 方法1:最原始

復(fù)制代碼 代碼如下:

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:簡(jiǎn)潔

復(fù)制代碼 代碼如下:

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

缺點(diǎn):一行一行的迭代f的時(shí)候,列表解析需要將文件的所有行讀取到內(nèi)存中,然后生成列表

方法3:最簡(jiǎn)潔,最節(jié)省內(nèi)存

復(fù)制代碼 代碼如下:

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

或者

復(fù)制代碼 代碼如下:

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

相關(guān)文章

最新評(píng)論