备忘录实现之间的差异-Python

备忘录实现之间的差异-Python,python,python-2.7,memoization,Python,Python 2.7,Memoization,这些备忘录实现之间有什么区别(如果有的话)?是否存在一个用例,其中一个优于另一个?(我以这个Fibo递归为例) 换句话说:检查self.memo:中是否有某个值与self.memo:中是否有某个值不在self.memo:之间是否有区别,如果是,是否有更好的实现(更好地优化性能等) 在这些实现中没有显著的性能差异。在我看来,fib2是一个更具可读性/pythonic的实现,应该是首选 我要提出的另一个建议是,在\uuuu init\uuuu中初始化备忘录,如下所示: self.memo = {0:

这些备忘录实现之间有什么区别(如果有的话)?是否存在一个用例,其中一个优于另一个?(我以这个
Fibo
递归为例)

换句话说:检查self.memo:中是否有某个值与self.memo:中是否有某个值不在self.memo:之间是否有区别,如果是,是否有更好的实现(更好地优化性能等)


在这些实现中没有显著的性能差异。在我看来,
fib2
是一个更具可读性/pythonic的实现,应该是首选

我要提出的另一个建议是,在
\uuuu init\uuuu
中初始化备忘录,如下所示:

self.memo = {0:0, 1:1}

这避免了在每次调用中进行条件检查,现在只需删除
fib
方法的前两行即可

in
not in
应该需要大致相同的时间复杂度-检索是
O(1)
,其中涉及的时间是对键值进行哈希运算,然后在基础哈希表中查找哈希。您可以尝试
timeit
来确定答案。
self.memo = {0:0, 1:1}