I am trying to split a list based on pattern of some elements of the list.
list = {a^(-1-x1),b^(-x2), (a+b)^(-x3), (1-a)^(-1+x4),(1-b)^(-1), (1+a b)}
I want to split the list into two based on a pattern given as a list. I am using SequenceCases
to achieve that. However it does not work for more than two patterns given as a list.
pattern = {Power(a,x_),Power(b,y_),Power(1-a,z_)};
list1=SequenceCases(list,pattern)
whose output (expected) should be
list1={a^(-1-x1),b^(-x2), (1-a)^(-1+x4)}
list2={(a+b)^(-x3),(1-b)^(-1), (1+a b)}
Note that I do not want to split the list based on position of elements, rather based on certain pattern/members of the list.
Additionally I wanted to ask if there is any easier way to find all the elements which have negative exponent (assuming all non-numeric variables in the exponent are 0
.).
{a^(-1-x1), (1-a)^(-1+x4), (1-b)^(-1)}
I can perform a Do
loop through the elements of the list, however it would be nice to know if there is any better alternative.