confused about resizing array in Python
Roel Schroeven
rschroev_nospam_ml at fastmail.fm
Sat Feb 3 14:50:28 EST 2007
Ruan schreef:
> My confusion comes from the following piece of code:
>
> memo = {1:1, 2:1}
> def fib_memo(n):
> global memo
> if not n in memo:
> memo[n] = fib_memo(n-1) + fib_memo(n-2)
> return memo[n]
>
> I used to think that the time complexity for this code is O(n) due to its
> use of memoization.
>
> However, I was told recently that in Python, dictionary is a special kind of
> array and to append new element to it or to resize it, it is in fact
> internally inplemented by creating another array and copying the old one to
> it and append a new one.
That's not correct. Python dictionaries are highly optimized and I
believe the time complexity is amortized constant (i.e. O(1)) for both
insertions and lookups.
--
If I have been able to see further, it was only because I stood
on the shoulders of giants. -- Isaac Newton
Roel Schroeven
More information about the Python-list
mailing list