PEP Request: Advanced Data Structures
Tim Chase
python.list at tim.thechases.com
Sat Jul 16 20:45:10 EDT 2016
On 2016-07-17 08:19, Chris Angelico wrote:
> Why do you need a linked list? That's an implementation detail; why
> not simply use a regular list?
>
> Not trolling, genuinely asking. Is there something that you
> specifically need those exact structures for?
I know there have been times I want known performance
characteristics.
My main reason for wanting linked lists is usually for stacks/queues
with O(1) push/pop, and I understand that a deque handles most of
that fairly efficiently ("approximately the same O(1) performance in
either direction").
The bisect and heapq modules also help with some of my usual
use-cases for BSTs (presuming "BST" unpacks as "binary search tree"),
while nested arrays/dicts usually serve for most of the rest of my
other tree/trie needs.
So usually I'm less concerned with the actual algorithm name than I
am with the "I want to {push,pop,search,insert,delete} in O(f) time"
where O(f) is usually either O(1) or O(N log N), instead of the
alternatives which might use O(N), O(N**k), or worse, O(k**N).
For anything beyond those basic CS data-structures, there's usually
something conveniently in PyPI.
-tkc
More information about the Python-list
mailing list