extract elements of n char from a list

Mark McEahern marklists at mceahern.com
Fri Jul 26 14:07:31 EDT 2002


for what it's worth, on my system, it's not until you get 1,000,000 elements
in the list that the difference between list comprehensions and filter
begins to show--so i'd say flip a coin and pick one.

// m

#! /usr/bin/env python

from time import clock

def time_it(f, *args, **kwargs):
    time_in = clock()
    result = f(*args, **kwargs)
    time_out = clock()
    return time_out - time_in, result

def filter_with_lc(list_to_filter, predicate):
    return [x for x in list_to_filter if predicate(x)]

def filter_with_filter(list_to_filter, predicate):
    return filter(predicate, list_to_filter)

def odd(n):
    return n % 2 != 0

def show(func, results, delta):
    print "%s: %1.3f" % (func.func_name, delta)

if __name__ == "__main__":
    import sys
    default = 1000
    try:
        size = int(sys.argv[1])
    except IndexError:
        size = default
    original = range(size)
    t1, r1 = time_it(filter_with_lc, original, odd)
    t2, r2 = time_it(filter_with_filter, original, odd)

    assert r1 == r2

    show(filter_with_lc, r1, t1)
    show(filter_with_filter, r2, t2)





More information about the Python-list mailing list