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

yipeiwu_com6年前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获取本机外网ip的方法

本文实例讲述了python获取本机外网ip的方法。分享给大家供大家参考。具体如下: python从显示ip地址的网站获取本机外网ip,这段python代码抓取网站上的ip地址信息 i...

python中的逆序遍历实例

如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列。 range()语法: range(start,end,step=1):顾头不顾尾 正序遍历: range(10):...

python中ConfigParse模块的用法

本文实例讲述了python中ConfigParse模块的用法,分享给大家供大家参考。具体方法如下: 写配置一般用ConfigParse.RawConfigParse类 读配置用Conf...

Python面向对象思想与应用入门教程【类与对象】

本文实例讲述了Python面向对象思想与应用。分享给大家供大家参考,具体如下: 面向对象思想 1、面向对象的设计思想 面向对象是基于万物皆对象这个哲学观点。 2、面向对象和面向过程...

python matplotlib库直方图绘制详解

python matplotlib库直方图绘制详解

例题:假设你获取了250部电影的时长(列表a中),希望统计出这些电影时长的分布状态(比如时长为100分钟到120分钟电影的数量,出现的频率)等信息,你应该如何呈现这些数据? 一些概念及...