📅  最后修改于: 2020-11-05 04:47:53             🧑  作者: Mango
在数学中,集合是定义明确的不同对象的集合,这些对象可以是数字,人,字母或什至其他集合。 Set也是Python中的内置类型之一。 SymPy提供设置模块。它包含不同类型集合的定义,并具有执行集合操作(例如交集,并集等)的功能。
Set是SymPy中任何其他类型的set的基类。请注意,它与Python的内置set数据类型不同。间隔类表示实际间隔,其边界属性返回FiniteSet对象。
>>> from sympy import Interval
>>> s=Interval(1,10).boundary
>>> type(s)
sympy.sets.sets.FiniteSet
FiniteSet是离散数字的集合。可以从任何序列对象(例如list或字符串)获得它。
>>> from sympy import FiniteSet
>>> FiniteSet(range(5))
输出
$ \ lbrace \ lbrace0,1,…,4 \ rbrace \ rbrace $
>>> numbers=[1,3,5,2,8]
>>> FiniteSet(*numbers)
输出
$ \ lbrace1,2,3,5,8 \ rbrace $
>>> s="HelloWorld"
>>> FiniteSet(*s)
输出
{H,W,d,e,l,o,r}
请注意,与内置集合一样,SymPy的集合也是不同对象的集合。
ConditionSet是满足给定条件的一组元素
>>> from sympy import ConditionSet, Eq, Symbol
>>> x=Symbol('x')
>>> s=ConditionSet(x, Eq(x**2-2*x,0), Interval(1,10)) >>> s
输出
$ \ lbrace x \ mid x \ in [1,10]∧x^ 2-2x = 0 \ rbrace $
联合是一个复合集。它包括两组中的所有元素。请注意,在这两个元素中找到的元素在联合中只会出现一次。
>>> from sympy import Union
>>> l1=[3,1,5,7]
>>> l2=[9,7,2,1]
>>> a=FiniteSet(*l1)
>>> b=FiniteSet(*l2)
>>> Union(a,b)
另一方面,相交仅包含两个元素中都存在的那些元素。
>>> from sympy import Intersection
>>> Intersection(a,b)
ProductSet对象代表两个集合中元素的笛卡尔积。
>>> from sympy import ProductSet
>>> l1=[1,2]
>>> l2=[2,3]
>>> a=FiniteSet(*l1)
>>> b=FiniteSet(*l2)
>>> set(ProductSet(a,b))
补数(a,b)将元素保留在b集共有的排除元素中。
>>> from sympy import Complement
>>> l1=[3,1,5,7]
>>> l2=[9,7,2,1]
>>> a=FiniteSet(*l1)
>>> b=FiniteSet(*l2)
>>> Complement(a,b), Complement(b,a)
SymmetricDifference集合在两个集合中仅包含不常见的元素。
>>> from sympy import SymmetricDifference
>>> l1=[3,1,5,7]
>>> l2=[9,7,2,1]
>>> a=FiniteSet(*l1)
>>> b=FiniteSet(*l2)
>>> SymmetricDifference(a,b)
输出
{2,3,5,9}