2012-07-02 19 views
6

Necesito manipular algunos intervalos de números reales. Básicamente realizaré uniones e intersecciones de los mismos. De esta manera siempre obtengo conjuntos de números reales que son uniones de un número finito de intervalos.sympy set: repetir en intervalos

Por el momento estoy usando sympy para python. Mi pregunta es: dado un conjunto de simetría, ¿hay una (buena) manera de iterar sobre sus intervalos?

Una posibilidad sería el uso de la cadena en representación del conjunto, que es como la siguiente:

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

y luego utilizar expresiones regulares para descomprimirlo.

¿Hay una manera más agradable y más de pitón de hacer esto?

Respuesta

7

Entonces, me responderé. Necesitaba usar los atributos args de la clase Union. Esto le da una tupla de los conjuntos cuya unión se está considerando:

>>> 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

Puede marcar su respuesta como la respuesta correcta. – asmeurer

+0

lui bravo Giacomo! – user22866