Are there only a few, unchanging templates?  If so, (dynamiclly) create
a function for each template.  This will be nearly the fastest you can
go in Python, excluding the time to create and byte-compile the nesting
function.

# This code is in the public domain
def make_nesting_expression(l, s):
    result = []
    for c in l:
        if isinstance(c, list):
            sub, s = make_nesting_expression(c, s)
            result.append(sub)
        else:
            result.append("l[%d]" % s)
            s += 1
    print "make_nesting_expression", l, result
    return "[" + ",".join(result) + "]", s

def make_nesting_function(l):
    return eval("lambda l: %s" % make_nesting_expression(l, 0)[0])

t = [['a1','a2'],['b1'],['c1'],['d1']]
l = [1, 2, 3, 4, 5]
f = make_nesting_function(t)
print f(l)

Jeff

Attachment: pgpntDRR9zF1S.pgp
Description: PGP signature

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to