Bases: sage.structure.unique_representation.UniqueRepresentation, sage.structure.parent.Parent
A class for finite enumerated set.
Returns the finite enumerated set with elements in elements where element is any (finite) iterable object.
The main purpose is to provide a variant of list or tuple, which is a parent with an interface consistent with EnumeratedSets and 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()
1
sage: S.first()
1
sage: S.category()
Category of facade finite enumerated sets
sage: TestSuite(S).run()
Note that being and 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
As an abuse, repeated entries in elements are allowed to model multisets:
sage: S1 = FiniteEnumeratedSet((1, 2, 1, 2, 2, 3))
sage: S1
{1, 2, 1, 2, 2, 3}
Finaly the elements are not aware of their parent:
sage: S.first().parent()
Integer Ring
TESTS:
sage: S = FiniteEnumeratedSet([1,2,3])
sage: S.an_element()
1
TESTS:
sage: S = FiniteEnumeratedSet([1,2,3])
sage: S.cardinality()
3
Return the first element of the enumeration or raise an EmptySetError if the set is empty.
EXAMPLES:
sage: S = FiniteEnumeratedSet('abc')
sage: S.first()
'a'
Returns the index of x in this finite enumerated set.
EXAMPLES:
sage: S = FiniteEnumeratedSet(['a','b','c'])
sage: S.index('b')
1
TESTS:
sage: S = FiniteEnumeratedSet([1,2,3])
sage: 1 in S
True
sage: 2 in S
True
sage: 4 in S
False
sage: ZZ in S
False
sage: S.is_parent_of(2)
True
sage: S.is_parent_of(4)
False
Returns the last element of the iteration or raise an EmptySetError if the set is empty.
EXAMPLES:
sage: S = FiniteEnumeratedSet([0,'a',1.23, 'd'])
sage: S.last()
'd'
TESTS:
sage: S = FiniteEnumeratedSet([1,2,3])
sage: S.list()
[1, 2, 3]
Return a random element.
EXAMPLES:
sage: S = FiniteEnumeratedSet('abc')
sage: S.random_element() # random
'b'
Returns the index of x in this finite enumerated set.
EXAMPLES:
sage: S = FiniteEnumeratedSet(['a','b','c'])
sage: S.index('b')
1
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: list index out of range
sage: S[-1], S[-2], S[-3]
(-51, 'a', 1)
sage: S[-4]
Traceback (most recent call last):
...
IndexError: list index out of range