首页 > 解决方案 > Sympy - 从 Union 获取组成子集

问题描述

给定一个联合对象 ( sympy.sets.sets.Union),我如何访问组成联合的各个子集?

例如:

from sympy import Interval,Union

interval_1 = Interval.open(-5,-1)
interval_2 = Interval.open(1,5)

set_union = Union(interval_1, interval_2)

我怎样才能得到interval_1interval_2来自set_union

注意:实际上 Union 对象是由 构造的sympy.calculus.util.continuous_domain,所以我无法直接访问组成区间,只有 Union 对象本身。

我在文档中找不到任何关于此的内容。我尝试迭代 Union 对象,但得到一个 TypeError,“并非所有组成集都是可迭代的”。

标签: pythonsetsympy

解决方案


一种方法是使用Union.args

>>> from sympy import Interval,Union
>>> 
>>> interval_1 = Interval.open(-5,-1)
>>> interval_2 = Interval.open(1,5)
>>> 
>>> set_union = Union(interval_1, interval_2)
>>> 
>>> for subset in set_union.args:
>>>     print(subset)
Interval.open(-5, -1)
Interval.open(1, 5)

推荐阅读