程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Python 内置函数,例如 any大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Python 内置函数,例如 any?

开发过程中遇到Python 内置函数,例如 any的问题如何解决?下面主要结合日常开发的经验,给出你关于Python 内置函数,例如 any的解决方法建议,希望对你解决Python 内置函数,例如 any有所启发或帮助;

我写了一个函数来知道一个数字在 Python 中是否是素数(在这种情况下使用 Python 3.8.1)。请参阅下面的 is_prime_v1。然后我想通过使any 内置函数来尝试 v2,请参阅下面的 is_prime_v2。我很想知道 v1 和 v2 之间的时差,通过下面的代码,我在我的电脑上得到了以下输出:

v1: 5.224290132522583
v2: 7.654775142669678

这让我很惊讶。我会假设使用 any 将花费大约相同的时间甚至更快。但这里速度较慢,猜测可能是由于对 any 本身的函数调用,但我不确定。也许有更深入 Python 知识的人可以解释原因?

from time import time
from math import sqrt


def is_prime_v1(n):
    if n < 3 or n % 2 == 0:
        return n == 2
    for i in range(3,int(sqrt(n)) + 1,2):
        if n % i == 0:
            return false
    return True


def is_prime_v2(n):
    if n < 3 or n % 2 == 0:
        return n == 2
    return not any(n % i == 0 for i in range(3,2))


if __name__ == '__main__':
    RANGE_SIZE = 2000000

    t = time()
    for i in range(RANGE_SIZE):
        is_prime_v1(i)
    print('v1:',time() - t)

    t = time()
    for i in range(RANGE_SIZE):
        is_prime_v2(i)
    print('v2:',time() - t)

解决方法

使用解决方案 2 时,您有 2 个 for 循环,而不是解决方案 1 中的一个:

any 函数中的一个(它需要遍历你给它的值)

一个作为 any 函数的参数,相当于你原来的 for 循环。

此外,正如@juanpa.arrivilaga 指出的那样,您正在创建一个生成器对象,它 creates additional overhead。

大佬总结

以上是大佬教程为你收集整理的Python 内置函数,例如 any全部内容,希望文章能够帮你解决Python 内置函数,例如 any所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。