[Tutor] Intermediate/advanced concepts

Alan Gauld alan.gauld at btinternet.com
Sat Nov 8 00:16:07 CET 2008

"Kent Johnson" <kent37 at tds.net> wrote

>> For example a linked list is pretty much a Python list.
> Other than the very different timing characteristics! 

True, but its pretty rare that timing issues are a reason 
for me to choose a data structure - especially if I need
to hand code it! :-)

> Python lists are O(1) for reading or writing a value at an index, 
> O(n) for inserting and deleting. Linked lists are O(n) for reading 
> and writing and O(1) for insertion and deletion (at a known 
> location).

I would say O(1) only if you already have a reference to 
that location (ie its known in that sense) but if you know that 
it's at position 23 but you only have a reference to the head 
you still need to navigate sequentially to the 23rd element
so its still an O(n). O(1) only applies when inserting at 
the next position to where you currently are. That's not too 
common a scenario in my experience.

But the geneal point is a good specific example (and I 
was struggling to think of one!) where you might choose a 
non standard list over the vanilla version. The array module 
is another case where performance is improved over the 
standard lists.

Alan G.

More information about the Tutor mailing list