Python高级应用实例对比:高效计算大文件中的最长行的长度

从来没见过这么漂亮的女律师,做你的当事人一定会很幸福。学会坚强,做一只沙漠中永不哭泣的骆驼!

前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高级应用实例对比:高效计算大文件中的最长行的长度到此结束。浮夸的语言,疲倦的笑容和迷离的眼神。小编再次感谢大家对我们的支持!