`
uuu999ggg
  • 浏览: 42578 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

python性能调优---优化list操作

阅读更多

代码:

digits2 = digits[0]
for d in digits[1:]:
    if digits2[-1] != d:
        digits2 += d

 性能

C:\samples\soundex\stage2>python soundex2c.py
Woo W000 12.6070768771
Pilgrim P426 14.4033353401
Flingjingwaller F452 19.7774882003

 问自己几个问题:每次循环都用digits[-1],高效吗?

用list索引高效吗?怎样更高效的维护每个变量的上一个digit?

 

优化代码2:

digits2 = ''
last_digit = ''
for d in digits:
    if d != last_digit:
        digits2 += d
        last_digit = d

 性能

 

C:\samples\soundex\stage3>python soundex3a.py
Woo W000 11.5346048171
Pilgrim P426 13.3950636184
Flingjingwaller F452 18.6108927252

 下面纯属翻译,有点不明白

 

为什么上述代码没有更快。(不是快了挺多的吗。)在Python中,用list的索引(index)相当的快。重复读取digit2[-1]

完全没有问题。另一方面:手动维护每个变量的最后一个digit意味着对于我们存储的每个digit都有两次赋值操作(原文:

means we have two variable assignments for each digit we're storing) (two variable assignments 可能是其他什么意思吧),清除了我们可能在去除list查询中获得的小小优化。(which wipes
out any small gains we might have gotten from eliminating the list lookup)

 

优化代码3

digits2 = "".join([digits[i] for i in range(len(digits))
if i == 0 or digits[i-1] != digits[i]])

 性能

C:\samples\soundex\stage3>python soundex3b.py
Woo W000 14.2245271396
Pilgrim P426 17.8337165757
Flingjingwaller F452 25.9954005327

 性能没有提升。

 

 

 

 

分享到:
评论

相关推荐

    python自学教程-04-代码调优.ev4.rar

    总之,“python自学教程-04-代码调优.ev4”涵盖了Python性能优化的多个方面,包括数据结构的选择、函数和模块的运用、函数式编程、代码规范、性能分析以及利用科学计算库等。通过学习这个教程,你可以系统地提升自己...

    python性能优化的技巧1

    【Python性能优化技巧1】 在Python编程中,性能优化是一个重要的方面,特别是在处理大量数据或对性能有较高要求的应用中。以下是一些Python性能优化的关键技巧和原理。 1. **少造轮子** - Python的标准库是经过...

    it资源JAVA前端PYTHON人工智能登.docx

    - 性能优化 - 前端自动化工具(Webpack、Gulp等) ### 三、Python - **概述**:提供了Python语言的学习资料。 - **知识点**: - Python基础语法(变量、数据类型、流程控制语句) - 函数与模块 - 文件操作 - ...

    python-higher-lower

    【Python高级与低级语言特性】 ...这包括但不限于内存管理、性能调优、系统接口等。通过这个项目,开发者可以深入理解Python作为高级语言的优势,同时也能学习到如何在必要时进行低级操作,以满足特定的性能需求。

    Python库 | ailever-0.2.510-py3-none-any.whl

    6. **优化工具**:如超参数调优或自动化实验管理。 7. **部署支持**:将训练好的模型打包成API服务,方便在生产环境中使用。 要了解`ailever`库的详细功能和用法,建议查看官方文档或源代码,或者直接在Python环境...

    Projet-Python-AI:Python语言的优化使用解决方案

    1. **Python性能优化**:Python作为解释型语言,其执行速度相对较慢。优化手段包括但不限于使用pypy解释器、代码重构以减少循环、利用NumPy和Pandas进行向量化操作、以及使用Cython或PyPyJIT进行部分代码编译。 2. ...

    Python-复盘所有NLP比赛的TOP方案只关注NLP比赛持续更新中

    `nlp-competitions-list-review-master`这个压缩包可能包含了一个目录,其中详细列举了各种NLP比赛的回顾和顶级解决方案。这些资源可以帮助我们了解比赛的背景、数据集特点、最佳实践以及获胜团队的策略。通过分析...

    Python库 | determined_cli-0.16.2rc6-py3-none-any.whl

    7. **超参数调优**:自动或手动调整模型的超参数以优化性能。 使用这个库时,开发者通常会通过Python的`pip`工具进行安装,命令可能如下: ```bash pip install determined_cli-0.16.2rc6-py3-none-any.whl ``` ...

    python实现决策树模型.docx

    为了优化模型性能,我们可以使用K折交叉验证(K-Fold Cross-Validation)来评估模型在不同子集上的表现,以及GridSearch网格搜索来寻找最优参数组合。 #### 3.1 K 折交叉验证 K折交叉验证将数据集分成K个子集,...

    测量Python代码运行的时间

    在编写和优化Python代码时,能够准确测量代码段的运行时间对于性能调优至关重要。Python提供了多种测量代码执行时间的方法,其中timeit模块是官方推荐的用于测量小段代码执行时间的工具。 ### timeit模块 timeit...

    java2phthon

    这个过程可能涉及到代码重构、性能调优等多个方面,确保转换后的Python代码既能满足功能需求,又能体现Python语言的优雅和简洁。"java2python-0.2"可能是转换工具的版本号,用于辅助完成这个复杂的转换任务。

    python按比例随机切分数据的实现

    总之,按比例随机切分数据是数据预处理的重要步骤,有助于优化模型性能。Python提供的简单工具如上述`split`函数,能够轻松实现这一任务。对于大型数据集,可以考虑使用`sklearn`库的`train_test_split`功能,它提供...

    Python库 | sorting_asmaa-0.0.5.tar.gz

    Python标准库已经包含了`sorted()`函数和`list.sort()`方法,可以满足基本的排序需求。然而,自定义排序算法或优化的排序实现往往能提供更高的性能,尤其是在处理大量数据时。 这个库可能包含以下方面的内容: 1. ...

    Python版数据挖掘实验2报告:使用 Scikit-learn中的 K近邻算法进行分类.docx

    通过本次实验,不仅深入理解了KNN算法的基本原理和工作流程,还学会了如何使用Scikit-learn库实现KNN算法,并对其性能进行了评估和优化。特别是在参数调优过程中,通过绘制不同`n_neighbors`值下模型性能的变化图,...

    redis桌面客户端redis-desktop-client-master.zip

    - **性能调优**:了解Redis的内存管理策略,合理设置内存限制,避免全盘扫描和大key问题。 - **安全考虑**:为Redis设置访问控制,避免暴露在公网,防止未授权访问。 - **版本更新**:定期检查Redis Desktop ...

    competitive-programming-python

    最后,提升编程技巧包括代码重构、优化和性能调优。Python的性能可能不如C++或Java,但通过使用生成器、列表推导式、装饰器等高级特性,以及对算法和数据结构的深入理解,可以显著提高代码执行速度。 总的来说,...

    Thinking In Java(中文第四版)

    - **性能调优** - JVM参数配置 - 性能监控工具使用 - 线程分析与优化 #### 八、与非Java代码交互 - **JNI (Java Native Interface)** - JNI原理与应用 - C/C++与Java混合编程 - **使用Java调用其他语言库** -...

    Python笔记:[进度01% ]Python语法,web开发,机器学习.zip

    1. 变量与数据类型:Python支持多种数据类型,如整型(int)、浮点型(float)、字符串(str)、布尔型(bool)和列表(list)、元组(tuple)、字典(dict)等复合类型。变量声明无需指定类型,动态类型使得代码更...

    redis服务器

    8. **配置与性能调优**:Redis服务器可以通过配置文件调整各项参数以优化性能,如内存限制、超时设置、网络缓冲区大小等。 通过学习和使用这些知识点,开发者可以有效地利用Redis作为数据存储和处理的工具,提升...

    OpenStack手动分布式部署教程

    - **性能调优**: - 根据负载调整各服务的参数配置。 - 对虚拟机进行性能测试,确保满足业务需求。 通过以上步骤,您可以手动在多台服务器上完成一个分布式的OpenStack云平台部署。这不仅有助于深入理解OpenStack...

Global site tag (gtag.js) - Google Analytics