in place-ness of list.append

skip at pobox.com skip at pobox.com
Mon Feb 5 08:58:00 EST 2007


>>>>> "BJörn" == BJörn Lindqvist <bjourne at gmail.com> writes:

    BJörn> On 2/5/07, skip at pobox.com <skip at pobox.com> wrote:
    >> 
    Bart> #--------------------------------------------------
    Bart> def addnumber(alist, num):
    Bart> """ work around the inplace-ness of .append """
    Bart> mylist = alist[:]
    Bart> mylist.append(num)
    Bart> return mylist
    Bart> #--------------------------------------------------
    >> 
    >> Such an operation will be O(N**2), and thus expensive if performed
    >> frequently on lists of moderate length.  I've never been tempted to
    >> do this.

    BJörn> How can that be? Making a copy of a list is O(N), isn't it?

Yes, not enough sleep under my belt or caffeine in my system (*) when I
wrote those replies.  addnumber is O(N).  If you are building a binary tree
of M elements you're going to wind up with an O(N*M) or O(N**2) cost to
build the tree though.  Actually, I think in the case of building the binary
tree you wind up with an O(N*log N) algorithm since you don't have to
traverse the entire set of nodes you've already built to find where to
insert the next one.

Skip

(*) It really sucks when someone's car alarm goes off at 4AM with no visual
indication when it's about -5F outside and you have to actually go outside
to check and make sure it's not your car (only to find out it's the car
directly behind yours)...

S



More information about the Python-list mailing list