Sets
Sets
A set is an unordered collection of unique elements. Both Sage and Mathematica provide a means for working with sets, creating sets and performing various operations on them.
Creating a Set
Sage
Sets are a built-in type in Python and as such Sage provides built-in support for sets. To create a Set in Sage you use the syntax set(list).
Example - Creating a Set
mySet = set( [1,2,3,4,5] )
Mathematica
Mathematica doesn't have a separate data-type, instead sets are represented in Mathematica using lists. Mathematica then provides special functions for performing set operations on lists.
Example - Creating a Set
mySet = {1,2,3,4,5}
Adding Values to a Set
Sage
The set class in Python provides a method called add for adding an element to a set. Note if add is passed an element already in the set then the set remains unmodified.
Example - Add an element to a set
mySet = set([1,2,3,4]) mySet.add(5)
Mathematica
Removing a Value from a Set
Sage
The set class in Python provides a method called remove for removing an element from a set. Note that if remove is passed an element not in the set a KeyError will be raised.
Example - Remove an element from a set
mySet = set([1,2,3,4]) mySet.remove(2)
Mathematica
Union
The union of two sets a,b is the set of all the elements that are in either a or b.
Sage
Python provides to ways for getting the union of two sets. One is with the | operator, and the other is with the method union.
Example - Union of a and b
a = set([1,2,3]) b = set([4,5,6]) #all the statements below are equivalent a|b a.union(b) b.union(a) #output set([1, 2, 3, 4, 5, 6])
Mathematica
Mathematica provides two ways for getting the union of two sets. One is to use the mathematical notation . The other is to use the Union function.
Example - Union of a and b
a = {1,2,3} b = {4,5,6} Union[a,b] (* Output: {1, 2, 3, 4, 5, 6} *)
Intersection
The intersection of two sets a,b is the set of all elements that are in both a and b.
Sage
Python provides two ways for getting the intersection of two sets. One is to use the & operator and the other is to use the method intersection.
Example - Intersection of a and b
a = set([1,2,3,9]) b = set([1,2,5,6,7,9]) #The statements below are equivalent a & b a.intersection(b) b.intersection(a) #Output set([1,2,9])
Mathematica
Mathematica provides two ways for getting the intersection of two sets. One is to use the mathematical notation . The other is to use the function Intersection.
Example - Intersection of a and b
a = {1,2,3,9} b = {1,2,5,6,7,9} Intersection[a,b] (* Output: {1,2,9} *)
Complement
The complement of a set b in a set a is a set of all elements in a but not in b.
Sage
Python provides two ways for determining the complement of a set in another set. One is to use the - operator and the other is to use the method difference.
Example
a = set([1,2,3]) b = set([1,4,5]) a - b #output set([2,3]) b - a #output set([4,5]) a.difference(b) #output set([2,3])
Mathematica
In Mathematica the complement of a set a in the set b is determined using the function Complement.
Example
a = {1,2,3} b = {1,4,5} Complement[a,b] #output {2,3} Complement[b,a] #output {4,5}
Symmetric Difference
Python also provides an operation on sets called the symmetric difference. The symmetric difference of a set a and a set b is the set of all elements that are in either a or b, but not both.
Sage
Python provides two ways for getting the symmetric difference of two sets a and b. One is to use the method symmetric_difference. The other is to use the ^ operator. Important: The ^ operator only works in Python it does not work in Sage. The reason for this is that Sage's preprocessor considers the ^ operator to mean a raised to the power b, and converts it to **.
Example
a = set([1,2,3]) b = set([1,4,5]) a.symmetric_difference(b) #output set([2,3,4,5])
Subsets
A set a is a subset of b if every element of a is also an element of b.
Determining Subsets
Sage
To determine if a set a is a subset of the set b you use the method issubset.
Example:
a = set([2,3]) b = set([1,2,3]) a.issubset(b) #Output True b.issubset(a) #Output False
Getting a list of all Subsets
Sage
Python doesn't natively provide a means of getting a list of all subsets of a set. However Sage provides a class called Subsets that can be used to get a list of all subsets of a set.
Example:
a = set([1,2,3,4]) ls = Subsets(a) ls.list() #Output: [{}, {1}, {2}, {3}, {4}, {1, 2}, {1, 3}, {1, 4}, {2, 3}, {2, 4}, {3, 4}, #{1, 2, 3}, {1, 2, 4}, {1, 3, 4}, {2, 3, 4}, {1, 2, 3, 4}] ls = Subsets(a,3) ls.list() #Output: [{1, 2, 3}, {1, 2, 4}, {1, 3, 4}, {2, 3, 4}]
Mathematica
Mathematica provides a function Subsets that returns a list of all the subsets of a set.
Example:
a = {1,2,3,4} Subsets[a] #Output: {{}, {1}, {2}, {3}, {4}, {1, 2}, {1, 3}, {1, 4}, {2, 3}, {2, 4}, {3, # 4}, {1, 2, 3}, {1, 2, 4}, {1, 3, 4}, {2, 3, 4}, {1, 2, 3, 4}} Subsets[a,{3}] #Output: {{1, 2, 3}, {1, 2, 4}, {1, 3, 4}, {2, 3, 4}}