在操作某個很多進程都要頻繁用到的大文件的時候,應該盡早釋放文件資源(f.close())
前2種方法主要用到了列表解析,性能稍差,而最后一種使用的時候生成器表達式,相比列表解析,更省內存
列表解析和生成器表達式很相似:
列表解析
[exPR for iter_var in iterable if cond_expr]
生成器表達式
(expr for iter_var in iterable if cond_expr)
longest = 0f = 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
f = open(FILE_PATH,"r")allLineLens = [len(line.strip()) for line in f]longest = max(allLineLens)f.close()
缺點:一行一行的迭代f的時候,列表解析需要將文件的所有行讀取到內存中,然后生成列表
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))
新聞熱點
疑難解答