zoukankan      html  css  js  c++  java
  • Python:高效计算大文件中的最长行的长度

    在操作某个很多进程都要频繁用到的大文件的时候,应该尽早释放文件资源(f.close())

    前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核心编程(第8章)

    原文地址:曾是土木人

    转载请注明出处:http://www.cnblogs.com/hongfei/p/3768207.html

  • 相关阅读:
    edgeR
    R中的运算符,条件语句,控制语句
    library-type:fr-unstanded vs fisrt-stand vs second-stanrd
    R的几个基础函数
    HTseq-count
    HISAT2的运用
    shell的符号总结
    python-tuple
    python -List
    win10 ubuntu18.0 LTS双系统安装
  • 原文地址:https://www.cnblogs.com/hongfei/p/3768207.html
Copyright © 2011-2022 走看看