2012-07-02 6 views
6

Potrzebuję manipulować niektórymi interwałami liczb rzeczywistych. Zasadniczo wykonam związki zawodowe i ich skrzyżowania. W ten sposób zawsze uzyskuję zbiory liczb rzeczywistych, które są związkami o skończonej liczbie interwałów.Zestaw sympatyczny: iteracja w odstępach

W tej chwili używam programu sympy dla Pythona. Moje pytanie brzmi: biorąc pod uwagę sympy Set, czy istnieje (miły) sposób na iterację w jego interwałach?

Jedną z możliwości byłoby używać repr ciąg zestawu, który wygląda mniej więcej tak:

(-oo, 5] U [7, 20] 

a następnie użyć wyrażeń regularnych, aby go rozpakować.

Czy jest to przyjemniejszy i bardziej pythonowy sposób na zrobienie tego?

Odpowiedz

7

Więc, odpowiem sobie. Musiałem użyć atrybutów args klasy Union. To daje krotkę zestawów, których związek jest brany pod uwagę:

>>> union 
[2.0, 10.0) U [20.0, 30.0) U {1.0, 15.0, 17.0, 40.0} 
>>> union.args 
([2.0, 10.0), [20.0, 30.0), {1.0, 15.0, 17.0, 40.0}) 
+0

Możesz oznaczyć swoją odpowiedź jako poprawną odpowiedź. – asmeurer

+0

lui bravo Giacomo! – user22866