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))

相关文章

django DRF图片路径问题的解决方法

django DRF图片路径问题的解决方法

前言 其实就是Django RESTful Framework,RESTful一种API的命名风格,主要因为前后端分离开发出现,前后端分离: 用户访问静态文件的服务器,数据全部由ajax...

Python3实现从文件中读取指定行的方法

本文实例讲述了Python3实现从文件中读取指定行的方法。分享给大家供大家参考。具体实现方法如下: # Python的标准库linecache模块非常适合这个任务 import li...

python编写简单端口扫描器

python编写简单端口扫描器

本文实例为大家分享了python编写简单端口扫描器的具体代码,供大家参考,具体内容如下 直接放代码 此代码只支持扫描域名,要扫描IP请自己修改 from socket import...

回调函数的意义以及python实现实例

因工作需要,最近在学习使用python来解析各种文件,包括xmind,xml,excel,csv等等。 在学习python解析XML的时候看到这样一段话: ElementTree(元素树...

Python-基础-入门 简介

Python简介及入门 python为什么是python 选择自己喜欢的语言,这往往不容易,更多的是根据需求 话说,之前是java,大学用了三年+实习半年,后来入职做测试开发后,碰到了p...