# untested but something like...

m = {}

def func(nc):
    return 2*nc  # whatever your rule is

def product_bases(w):
    nc = w.args_cnc()[1]
    if len(nc) == 2 or len(nc) == 1 and nc[0].is_Pow and nc[0].exp == 2:
        return Mul._from_args(nc)

def updater(p, func):
    p2 = product_bases(p)
    if p2 and p2 not in m:
        m[p2] = func(p2)
        return m[p2]
    return p

(15*ex**2 + 6*ey*ex).xreplace(Transform(lambda k: updater(k, func), lambda
w: w.is_Mul))

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sympy+unsubscr...@googlegroups.com.
To post to this group, send email to sympy@googlegroups.com.
Visit this group at http://groups.google.com/group/sympy?hl=en-US.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to