Also be aware that FiniteSets are unordered so the order of the result from list() may differ between sessions.
Aaron Meurer On Wed, May 18, 2016 at 7:20 PM, Aaron Meurer <[email protected]> wrote: > SymPy set objects are immutable, like every other SymPy object, so pop > could not work. However, iterating over the set does work. For finite > sets, the easiest way is to convert to a list. For countable infinite > sets, converting to a list won't work obviously, but you can use > iter(s) and call next() on it. Iteration is generally implemented so > that it hits every element (for instance, iterating over S.Integers > gives 0, 1, -1, 2, -2, ...). For uncountable sets like intervals, all > you can't iterate, but you can check containment using "in", or > intersect with other sets. > > Aaron Meurer > > On Wed, May 18, 2016 at 5:26 PM, Denis Akhiyarov > <[email protected]> wrote: >> Solveset is not indexable, so try converting to list. What surprised me is >> that it is not like regular python set: >> >> ptipython >> Python 3.5.1 |Anaconda custom (64-bit)| (default, Dec 7 2015, 11:16:01) >> Type "copyright", "credits" or "license" for more information. >> >> >> IPython 4.2.0 -- An enhanced Interactive Python. >> ? -> Introduction and overview of IPython's features. >> %quickref -> Quick reference. >> help -> Python's own help system. >> object? -> Details about 'object', use 'object??' for extra details. >> >> >> In [1]: import sympy >> >> >> In [2]: sympy.__version__ >> Out[2]: '1.0' >> >> >> In [3]: x=sympy.symbols('x',real=True) >> ...: e,m=sympy.symbols('e,m',positive=True) >> ...: sympy.solveset(sympy.sqrt(2*e*m-(x*m)**2),x) >> Out[3]: {-sqrt(2)*sqrt(e)/sqrt(m), sqrt(2)*sqrt(e)/sqrt(m)} >> >> >> In [4]: _ >> Out[4]: {-sqrt(2)*sqrt(e)/sqrt(m), sqrt(2)*sqrt(e)/sqrt(m)} >> >> >> In [5]: sols=_ >> >> >> In [6]: type(sols) >> Out[6]: sympy.sets.sets.FiniteSet >> >> >> In [7]: sols.pop() >> --------------------------------------------------------------------------- >> AttributeError Traceback (most recent call last) >> <ipython-input-7-188fe3e26bd2> in <module>() >> ----> 1 sols.pop() >> >> >> AttributeError: 'FiniteSet' object has no attribute 'pop' >> >> >> In [8]: list(sols) >> Out[8]: [sqrt(2)*sqrt(e)/sqrt(m), -sqrt(2)*sqrt(e)/sqrt(m)] >> >> >> >> >> >> On Tuesday, May 17, 2016 at 9:24:47 PM UTC-5, chaowen guo wrote: >>> >>> Hi: >>> >>> In sympy1.0, it is recommended to use solveset to solve equation, but how >>> to get the element of the solution? >>> >>> For example: >>> >>> import sympy >>> x=sympy.symbols('x',real=True) >>> e,m=sympy.symbols('e,m',positive=True) >>> sympy.solveset(sympy.sqrt(2*e*m-(x*m)**2),x) >>> >>> I want to get the first and second solution individually to do further >>> calculation, but I can not directly use [0] and [1], so how to get >>> individual element? >> >> -- >> 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 post to this group, send email to [email protected]. >> Visit this group at https://groups.google.com/group/sympy. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/sympy/733f8e55-e2ad-438e-bd2a-792524801685%40googlegroups.com. >> >> For more options, visit https://groups.google.com/d/optout. -- 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 post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAKgW%3D6LcHiuhdEXjz%2B%3DCVN86CT%2BWZY4qxL2vBnutFuyJveA%3D6g%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
