Deleting the first element of a list

Chad Netzer cnetzer at mail.arc.nasa.gov
Wed Oct 2 18:49:32 EDT 2002


On Wednesday 02 October 2002 15:36, JB wrote:
> Is using del to delete the first element (that is, the 0th
> element) of a list faster than x = x[1:]?

Looks like it (timed both short and long lists. w/ loops unrolled):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

import time

short_list = [0,1,2,3,4,5] * 2
long_list = short_list * 10000

n = 10
avg = 0

lists = [ short_list, long_list ]
for l in lists:

    for i in xrange(n):
        tmp_list = l[:]
        start = time.time()

        del tmp_list[ 0 ]
        del tmp_list[ 0 ]
        del tmp_list[ 0 ]
        del tmp_list[ 0 ]
        del tmp_list[ 0 ]
        del tmp_list[ 0 ]
        del tmp_list[ 0 ]
        del tmp_list[ 0 ]
        del tmp_list[ 0 ]
        del tmp_list[ 0 ]

        end = time.time()
        avg = avg + (end - start)
    avg = avg / 10 / n
    print "avg (del):\t %.13f secs" % (avg,)

    for i in xrange(n):
        tmp_list = l[:]
        start = time.time()

        tmp_list = tmp_list[ 1: ]
        tmp_list = tmp_list[ 1: ]
        tmp_list = tmp_list[ 1: ]
        tmp_list = tmp_list[ 1: ]
        tmp_list = tmp_list[ 1: ]
        tmp_list = tmp_list[ 1: ]
        tmp_list = tmp_list[ 1: ]
        tmp_list = tmp_list[ 1: ]
        tmp_list = tmp_list[ 1: ]
        tmp_list = tmp_list[ 1: ]

        end = time.time()
        avg = avg + (end - start)
    avg = avg / 10 / n
    print "avg (slicing):\t %.13f secs" % (avg,)
    print
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

avg (del):	 0.0000028991699 secs
avg (slicing):	 0.0000033883095 secs

avg (del):	 0.0032141237535 secs
avg (slicing):	 0.0115537309935 secs

-- 

Chad Netzer
cnetzer at mail.arc.nasa.gov




More information about the Python-list mailing list