大佬教程收集整理的这篇文章主要介绍了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,请注明来意。