"Dick Moores" <[EMAIL PROTECTED]> wrote

>>But thats not an efficient approach if you have a big list, the
>>best route is to build a new list, preferably using a list
>>comprehension.
>
> Alan, here's a test I made up. It doesn't show your contention is
> correct, but I imagine you or someone else will show me I don't know
> what I'm doing. :-)

Efficiency isn't always measured in terms of speed!

Think about the memory resources. Imagine you have a list
of a few million entries. Now with your approach you make
a copy (doubling the memory usage) then delete the ones
you don't need - possibly most of them. But with a LC you
start with the original list and build a new list with only those
elements you need. Thus the maximum memory use is
the final product.

The reason thats significant is that on most OS proceses
don't release memory back to the OS untul,after they die.
So your approach will leave your program consuming
twice the size of the list forever more (until it dies) whereas
the other approach only uses List1 + List2...

Of course for
1) a short lived process on a PC
2) with lots of RAM and
3) a single user

or for small size lists

then that won't make much difference.
But if any of those conditions is not true it could be significant

HTH,

-- 
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld 


_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to