By eliminating list cloning, my function got much faster than before.
I really appreciate you, John.

def prefixdel_recursively2(alist):
    if len(alist) < 2:
        return alist

    first = alist.pop(0)
    unneeded = [no for no, line in enumerate(alist) if line.startswith(first)]
    adjust=0
    for i in unneeded:
        del alist[i+adjust]
        adjust -= 1

    return [first] + prefixdel_recursively(alist)


process stime
prefixdel_stupidly         : 11.9247150421
prefixdel_recursively   : 14.6975700855
prefixdel_recursively2 : 0.408113956451
prefixdel_by_john        : 7.60227012634
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to