gpt4 book ai didi

python - 比较一串两个长度的最快方法

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:12 25 4
gpt4 key购买 nike

我正在寻找比较字符串是否具有两种长度之一的最快方法。这个字符串必须长一个字母或短一个字母,我觉得下面的 if 语句可能不是最快的,我看不到有它或没有它在时间上有多大改进。


我正在比较两个字符串,如果 my_word 长度比 compare_word 少或多 1 个字符,那么我将继续我的循环。

if (len(compare_word) > (len(my_word)+1)) and (len(compare_word) < (len(my_word)-1)): 
continue

最佳答案

  • 你不需要调用len两次,
  • 你可以利用abs

例子:

s = "Hello"
t = "Worl"

if abs(len(s) - len(t)) > 1:
print("string lengths differ by more than 1")

更新:使用 ipython 的 timeit但是,几乎没有速度增益:

In [10]: s = str(range(100000))

In [11]: t = str(range(100001))

In [12]: %timeit len(s) > len(t) + 1 and len(s) < len(t) - 1
10000000 loops, best of 3: 106 ns per loop

In [13]: %timeit abs(len(s) - len(t)) > 1
10000000 loops, best of 3: 115 ns per loop

In [14]: %timeit 1 >= len(s) - len(t) >= -1
10000000 loops, best of 3: 113 ns per loop

这是另一个使用较短字符串的运行,但结果大致相同:https://gist.github.com/miku/6904419 .

然而,在 context OP 代码,abs(len(s) - len(t)) > 1 确实更快。

关于python - 比较一串两个长度的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19277685/

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