SymPy 集合
在数学中,集合是一组明确定义的不同对象的集合,可以是数字、人、字母或其他集合。集合也是Python中的一种内置类型。SymPy提供了集合模块。它包含不同类型的集合的定义,并具有执行交集、并集等集合操作的功能。
集合是SymPy中任何其他类型集合的基类。请注意,它与Python的内置集合数据类型是不同的。区间类表示实数区间,其边界属性返回一个 FiniteSet 对象。
>>> from sympy import Interval
>>> s=Interval(1,10).boundary
>>> type(s)
sympy.sets.sets.FiniteSet
FiniteSet是一个离散数字的集合。它可以从任何序列对象(如列表或字符串)中获得。
>>> 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的Set也是一组不同的对象。
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
Union 是一个复合集合。它包含两个集合中的所有元素。注意,如果元素同时出现在两个集合中,它在联合中只会出现一次。
>>> from sympy import Union
>>> l1=[3,1,5,7]
>>> l2=[9,7,2,1]
>>> a=FiniteSet(*l1)
>>> b=FiniteSet(*l2)
>>> Union(a,b)
Intersection 另一方面只包含那些同时存在于两个集合中的元素。
>>> 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))
Complement(a,b) 保留a中的元素,不包括与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}