gpt4 book ai didi

python - 为什么大整数除法比切片(数字)字符串更快,以访问单个数字?

转载 作者:太空狗 更新时间:2023-10-30 00:27:00 24 4
gpt4 key购买 nike

我正在做一项(典型的)寻找素数的作业。我想我会很聪明,对于大量的数字,用这个技巧跳过除法过程:

def div5(candidate):
return str(candidate)[-1] == "5"

将 5 自加几千次似乎很浪费(我只需要最后一个成员),但我想确定。

Measure time elapsed in Python? 上感谢 unutbu

%>python -mtimeit -s"import intDiv" "intDiv.div5(2147483645)"
1000000 loops, best of 3: 0.272 usec per loop

%>python -mtimeit -s"import strDiv" "strDiv.str5(2147483645)"
1000000 loops, best of 3: 0.582 usec per loop

为了清楚起见,这里是我定义的两个方法。

def div5(maxi): return not (maxi%5)

def str5(maxi): return str(maxi)[-1] == '5'

这太慢了。如何在不转换整数(不必要地)的情况下分析 str(maxi) 的最后一个成员?

感谢@Claudiu 帮助清理眼中钉。

最佳答案

% python -mtimeit "str(2147483645)"
1000000 loops, best of 3: 0.321 usec per loop

% python -mtimeit "2147483645 % 5"
10000000 loops, best of 3: 0.0351 usec per loop

% python -mtimeit "'2147483645'[-1]"
10000000 loops, best of 3: 0.0349 usec per loop

我会说瓶颈是转换为字符串。

关于python - 为什么大整数除法比切片(数字)字符串更快,以访问单个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7474628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com