Python 意想不到的表现:蛮力与字典(Collat​​z 序列)

Python unexpected performance: Brute Force vs Dictionaries (Collatz Sequence)

在这个问题上,字典有没有可能比蛮力法慢?

有没有可能是字典影响了这个程序的性能,让它真的很慢?它们不是用来提高性能和加快程序速度的吗? 或者...我的代码有问题吗?

谢谢!

这个

if str(k) in dictionary.keys():
#                      ^^^^^

不好。这会将一组键变成 list!并线性扫描(在 python3 中,它是一个生成器,但几乎一样糟糕)。

可以说。

if str(k) in dictionary:

这样做是正确的,在 O(1) 而不是 O(n) 中!

此外,在 python 中不需要将事物转换为字符串以将它们用作 dict 中的键。数字很​​好,所以你真的可以说:k 你目前说的任何地方 str(k).