Finite Enumerated Sets¶
- class sage.sets.finite_enumerated_set.FiniteEnumeratedSet(elements)[source]¶
- Bases: - UniqueRepresentation,- Parent- A class for finite enumerated set. - Returns the finite enumerated set with elements in - elementswhere- elementis any (finite) iterable object.- The main purpose is to provide a variant of - listor- tuple, which is a parent with an interface consistent with- EnumeratedSetsand has unique representation. The list of the elements is expanded in memory.- EXAMPLES: - sage: S = FiniteEnumeratedSet([1, 2, 3]) sage: S {1, 2, 3} sage: S.list() [1, 2, 3] sage: S.cardinality() 3 sage: S.random_element() # random 1 sage: S.first() 1 sage: S.category() Category of facade finite enumerated sets sage: TestSuite(S).run() - >>> from sage.all import * >>> S = FiniteEnumeratedSet([Integer(1), Integer(2), Integer(3)]) >>> S {1, 2, 3} >>> S.list() [1, 2, 3] >>> S.cardinality() 3 >>> S.random_element() # random 1 >>> S.first() 1 >>> S.category() Category of facade finite enumerated sets >>> TestSuite(S).run() - Note that being an enumerated set, the result depends on the order: - sage: S1 = FiniteEnumeratedSet((1, 2, 3)) sage: S1 {1, 2, 3} sage: S1.list() [1, 2, 3] sage: S1 == S True sage: S2 = FiniteEnumeratedSet((2, 1, 3)) sage: S2 == S False - >>> from sage.all import * >>> S1 = FiniteEnumeratedSet((Integer(1), Integer(2), Integer(3))) >>> S1 {1, 2, 3} >>> S1.list() [1, 2, 3] >>> S1 == S True >>> S2 = FiniteEnumeratedSet((Integer(2), Integer(1), Integer(3))) >>> S2 == S False - As an abuse, repeated entries in - elementsare allowed to model multisets:- sage: S1 = FiniteEnumeratedSet((1, 2, 1, 2, 2, 3)) sage: S1 {1, 2, 1, 2, 2, 3} - >>> from sage.all import * >>> S1 = FiniteEnumeratedSet((Integer(1), Integer(2), Integer(1), Integer(2), Integer(2), Integer(3))) >>> S1 {1, 2, 1, 2, 2, 3} - Finally, the elements are not aware of their parent: - sage: S.first().parent() Integer Ring - >>> from sage.all import * >>> S.first().parent() Integer Ring - first()[source]¶
- Return the first element of the enumeration or raise an - EmptySetErrorif the set is empty.- EXAMPLES: - sage: S = FiniteEnumeratedSet('abc') sage: S.first() 'a' - >>> from sage.all import * >>> S = FiniteEnumeratedSet('abc') >>> S.first() 'a' 
 - index(x)[source]¶
- Return the index of - xin this finite enumerated set.- EXAMPLES: - sage: S = FiniteEnumeratedSet(['a','b','c']) sage: S.index('b') 1 - >>> from sage.all import * >>> S = FiniteEnumeratedSet(['a','b','c']) >>> S.index('b') 1 
 - last()[source]¶
- Return the last element of the iteration or raise an - EmptySetErrorif the set is empty.- EXAMPLES: - sage: S = FiniteEnumeratedSet([0,'a',1.23, 'd']) sage: S.last() 'd' - >>> from sage.all import * >>> S = FiniteEnumeratedSet([Integer(0),'a',RealNumber('1.23'), 'd']) >>> S.last() 'd' 
 - random_element()[source]¶
- Return a random element. - EXAMPLES: - sage: S = FiniteEnumeratedSet('abc') sage: S.random_element() # random 'b' - >>> from sage.all import * >>> S = FiniteEnumeratedSet('abc') >>> S.random_element() # random 'b' 
 - rank(x)[source]¶
- Return the index of - xin this finite enumerated set.- EXAMPLES: - sage: S = FiniteEnumeratedSet(['a','b','c']) sage: S.index('b') 1 - >>> from sage.all import * >>> S = FiniteEnumeratedSet(['a','b','c']) >>> S.index('b') 1 
 - unrank(i)[source]¶
- Return the element at position - i.- EXAMPLES: - sage: S = FiniteEnumeratedSet([1,'a',-51]) sage: S[0], S[1], S[2] (1, 'a', -51) sage: S[3] Traceback (most recent call last): ... IndexError: tuple index out of range sage: S[-1], S[-2], S[-3] (-51, 'a', 1) sage: S[-4] Traceback (most recent call last): ... IndexError: index out of range - >>> from sage.all import * >>> S = FiniteEnumeratedSet([Integer(1),'a',-Integer(51)]) >>> S[Integer(0)], S[Integer(1)], S[Integer(2)] (1, 'a', -51) >>> S[Integer(3)] Traceback (most recent call last): ... IndexError: tuple index out of range >>> S[-Integer(1)], S[-Integer(2)], S[-Integer(3)] (-51, 'a', 1) >>> S[-Integer(4)] Traceback (most recent call last): ... IndexError: index out of range