如何用一行代码让运行速度提高近10倍 | Python从入门到精通:入门篇之二十

简介: 本节课对前面的质数练习进行一次程序的优化,使代码结构更加的清晰。

第十九节:循环终止之break和continue的用法

求100以内的所有质数

i=2
while i<=100 :
    flag = True
    j=2
    while j<i:
        if i%j==0:
            flag=False
        j+=1
    if flag :
        print(i)
    i+=1

这是我们之前写过的一个质数练习的代码,执行结果显然是没有问题的。但是只追求结果是没有什么意义的,就比如,打印100以内的质数,为什么我们要使用循环,而不是用第一次判断质数的代码,一个一个输入进行判断呢?那同学们考虑一下,这个循环就是程序的最优性能的一个质数判断代码了吗?跟着老师往下看。
要提升性能,首先就要知道当前程序的性能如何,可以通过引入Python的模块来判断,该模块可以输出程序运行时长,我们就以此数据为依托来进行性能的提升。
解释一下模块的概念,通过模块可以对Python进行扩展。
为了获得程序执行的时长,引入一个time的模块,time函数可以用来获取当前的时间,通过获取程序的开始时间和结束时间的二者之差来统计该时长。为了使得样本更加具有代表性,将数据改为2~10000。代码如下:

from time import*
#获得程序运行的开始时间
begin=time()
i=2
while i<=10000:
    flag = True
    j=2
    while j<i:
        if i % j == 0 :
            flag = False
        j += 1
    if flag :
        pass
        #打印语句用时太久,将其删掉,为不影响程序的运行,直接pass就好。
        # print(i)
    i+=1

#获取程序运行的结束时间
end=time()
#获得程序运行时长
print("程序运行的时长为:",end-begin,"秒")

执行结果为:
image.png
可以看到,程序运行的时长为:8.815秒。
同学们来思考一下,咱们当前的判断质数的代码逻辑:举个例子,当要确定10000是否是质数的时候,计算机需要将10000与2~9999都进行一个除法运算,但是其实程序在将10000与2做除法的时候就可以判断该数字不是质数,没必要再进行继续判断,那该如何实现这一逻辑呢。
结合我们上节课讲的,一旦程序判断10000可以整除2,就没必要继续判断了,也就是说内层循环可以结束了。所以,我们可以用break来完成这一功能。
但是将break放在什么位置呢?
当程序进入判断if i%j==0 flag=False,此时对于i来说只要看到flag的值为false,就没必要继续了,所以break 可以添加在flag变为false的后面,即如下:

from time import*
begin=time()
i=2
while i<=10000:
    flag = True
    j=2
    while j<i:
        if i % j == 0 :
            flag = False
            break
        j += 1
    if flag :
        pass
    i+=1
end=time()
print("程序运行的时长为:",end-begin,"秒")

执行结果为:
image.png
可以看到,此时只需要0.916秒程序就可以执行完毕。
但是这个就是最优的代码了吗?前人从来没有停止过思考,你也可以去想下,是否还可以有更加优质的算法,具体的教学老师在下节课再讲授。提示:还是可以从内层循环着手。
第二十一节:一行代码都不加如何提升性能

视频学习:阿里云大学之Python进阶必看

配套Python进阶文章点击此处获取

相关文章
|
1天前
|
缓存 算法 数据处理
Python入门:9.递归函数和高阶函数
在 Python 编程中,函数是核心组成部分之一。递归函数和高阶函数是 Python 中两个非常重要的特性。递归函数帮助我们以更直观的方式处理重复性问题,而高阶函数通过函数作为参数或返回值,为代码增添了极大的灵活性和优雅性。无论是实现复杂的算法还是处理数据流,这些工具都在开发者的工具箱中扮演着重要角色。本文将从概念入手,逐步带你掌握递归函数、匿名函数(lambda)以及高阶函数的核心要领和应用技巧。
Python入门:9.递归函数和高阶函数
|
1天前
|
开发者 Python
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
|
1天前
|
存储 SQL 索引
Python入门:7.Pythond的内置容器
Python 提供了强大的内置容器(container)类型,用于存储和操作数据。容器是 Python 数据结构的核心部分,理解它们对于写出高效、可读的代码至关重要。在这篇博客中,我们将详细介绍 Python 的五种主要内置容器:字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)。
Python入门:7.Pythond的内置容器
|
1天前
|
存储 索引 Python
Python入门:6.深入解析Python中的序列
在 Python 中,**序列**是一种有序的数据结构,广泛应用于数据存储、操作和处理。序列的一个显著特点是支持通过**索引**访问数据。常见的序列类型包括字符串(`str`)、列表(`list`)和元组(`tuple`)。这些序列各有特点,既可以存储简单的字符,也可以存储复杂的对象。 为了帮助初学者掌握 Python 中的序列操作,本文将围绕**字符串**、**列表**和**元组**这三种序列类型,详细介绍其定义、常用方法和具体示例。
Python入门:6.深入解析Python中的序列
|
1天前
|
知识图谱 Python
Python入门:4.Python中的运算符
Python是一间强大而且便捷的编程语言,支持多种类型的运算符。在Python中,运算符被分为算术运算符、赋值运算符、复合赋值运算符、比较运算符和逻辑运算符等。本文将从基础到进阶进行分析,并通过一个综合案例展示其实际应用。
|
1天前
|
程序员 UED Python
Python入门:3.Python的输入和输出格式化
在 Python 编程中,输入与输出是程序与用户交互的核心部分。而输出格式化更是对程序表达能力的极大增强,可以让结果以清晰、美观且易读的方式呈现给用户。本文将深入探讨 Python 的输入与输出操作,特别是如何使用格式化方法来提升代码质量和可读性。
Python入门:3.Python的输入和输出格式化
|
1天前
|
存储 Linux iOS开发
Python入门:2.注释与变量的全面解析
在学习Python编程的过程中,注释和变量是必须掌握的两个基础概念。注释帮助我们理解代码的意图,而变量则是用于存储和操作数据的核心工具。熟练掌握这两者,不仅能提高代码的可读性和维护性,还能为后续学习复杂编程概念打下坚实的基础。
Python入门:2.注释与变量的全面解析
|
1天前
|
机器学习/深度学习 人工智能 算法框架/工具
Python入门:1.Python介绍
Python是一种功能强大、易于学习和运行的解释型高级语言。由**Guido van Rossum**于1991年创建,Python以其简洁、易读和十分工程化的设计而带来了庞大的用户群体和丰富的应用场景。这个语言在全球范围内都被认为是**创新和效率的重要工具**。
Python入门:1.Python介绍
|
23天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
1月前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
47 2

热门文章

最新文章

推荐镜像

更多