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实现windows壁纸定期更换功能

python实现windows壁纸定期更换功能

本文定期更换windows壁纸的python程序,很简单,属于自己写着玩的那种,不提供完美的壁纸切换解决方案。 安装pywin32 extensions 安装python2.7后,然后管...

python简单验证码识别的实现方法

python简单验证码识别的实现方法

利用SVM向量机进行4位数字验证码识别        主要是思路和步骤如下: 一,素材收集 检查环境是否包含有相应的库: 1....

python保存log日志,实现用log日志画图

在神经网络训练中,我们常常需要画出loss function的变化图,log日志里会显示每一次迭代的loss function的值,于是我们先把log日志保存为log.txt文档,再利用...

Android分包MultiDex策略详解

1.分包背景 这里首先介绍下MultiDex的产生背景。 当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt。DexOpt的...

浅析Python中将单词首字母大写的capitalize()方法

 capitalize()方法返回字符串的一个副本,只有它的第一个字母大写。对于8位的字符串,这个方法与语言环境相关。 语法 以下是capitalize()方法的语法: s...