As far as I know, this functionality isn't implemented anywhere. The notion of "first one" would be a little ambiguous anyways because it would depend on the args ordering, which might not be the same as the printer order.
If you are targeting a specific expression and you know of a larger expression that you want to be treated differently, you could replace that exact expression. For example, if you had expr = sin(a) + cos(a) and you wanted to replace a in sin(a) but not in cos(a) you could just use expr.subs(sin(a), sin(x)). Barring that, you would need to write this substitution algorithm from scratch by walking the expression tree. I guess a max_replacements keyword argument could be added to subs or replace, although this is the first time I've heard of someone needing it. Aaron Meurer On Thu, Aug 1, 2024 at 11:49 AM Thomas Ligon <[email protected]> wrote: > > I want to remove all occurrences of “a” in expression “exp” except for the > first one, which I want to keep. > > To do that, I have tried > X = symbols(‘X’) > > <<replace first occurrence of a by X>> > > replace all remaining occurrences by 0 > > replace X by a > > For the second statement, an Internet search suggested replace, like this: > > X = symbols(‘X’) > > exp = exp.replace(a, X, 1) # maximum of one replacement > > exp = exp.subs(a, 0) > > exp = exp.subs(X, a) > > Unfortunately, this version of replace doesn’t work, and I have not found any > way to do it with subs of xreplace. This post tells me that subs and replace > have kwargs, but I haven’t found any documentation on that. > > https://stackoverflow.com/questions/56584025/sympy-subs-vs-replace-vs-xreplace > > -- > 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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/febcad9b-c406-4636-965f-ab9afec8f501n%40googlegroups.com. -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAKgW%3D6%2Bn1gha0Z-%2B-NvxO3XXXJVnCJdX7Ko-oYwDKD5t%3DvHFkw%40mail.gmail.com.
