Els conjunts (set
): em permeten guardar conjunts (desordenats) de dades (als que es pot calcular una funció de hash), en el que no existeixen repeticions. Es un tipus de dades mutable.
Normalment s'utilitzen per comprovar si existeix un element en el conjunt, eliminar duplicats i càlculs matemàtics, com la intersecció, unió, diferència,...
Podem definir un tipus set
de diferentes formes:
>>> set1 = set()
>>> set1
set()
>>> set2=set([1,1,2,2,3,3])
>>> set2
{1, 2, 3}
>>> set3={1,2,3}
>>> set3
{1, 2, 3}
El tipus frozenset
es un tipus inmutable de conjunts.
>>> fs1=frozenset()
>>> fs1
frozenset()
>>> fs2=frozenset([1,1,2,2,3,3])
>>> fs2
frozenset({1, 2, 3})
De les operacions que vam estudiar en l'apartat "Tipo de dades seqüència" els conjuns només accepten les següents:
- Recorregut
- Operadores de pertanyença:
in
inot in
.
Entre les funcions definides podem utilitzar: len
, max
, min
, sorted
.
>>> set1={1,2,3}
>>> set1.add(4)
>>> set1
{1, 2, 3, 4}
>>> set1.remove(2)
>>> set1
{1, 3, 4}
El tipus frozenset
es inmutable per lo tanto no poseeix els mètodos add
i remove
.
set1.add set1.issubset
set1.clear set1.issuperset
set1.copy set1.pop
set1.difference set1.remove
set1.difference_update set1.symmetric_difference
set1.discard set1.symmetric_difference_update
set1.intersection set1.union
set1.intersection_update set1.update
set1.isdisjoint
Veiem alguns mètodes, partint sempre d'aquests dos conjunts:
>>> set1={1,2,3}
>>> set2={2,3,4}
>>> set1.difference(set2)
{1}
>>> set1.difference_update(set2)
>>> set1
{1}
>>> set1.symmetric_difference(set2)
{1, 4}
>>> set1.symmetric_difference_update(set2)
>>> set1
{1, 4}
>>> set1.intersection(set2)
{2, 3}
>>> set1.intersection_update(set2)
>>> set1
{2, 3}
>>> set1.union(set2)
{1, 2, 3, 4}
>>> set1.update(set2)
>>> set1
{1, 2, 3, 4}
Veiem els mètodes d'afegir i eliminar elements:
>>> set1 = set()
>>> set1.add(1)
>>> set1.add(2)
>>> set1
{1, 2}
>>> set1.discard(3)
>>> set1.remove(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 3
>>> set1.pop()
1
>>> set1
{2}
i els mètodes de comprovació:
>>> set1 = {1,2,3}
>>> set2 = {1,2,3,4}
>>> set1.isdisjoint(set2)
False
>>> set1.issubset(set2)
True
>>> set1.issuperset(set2)
False
>>> set2.issuperset(set1)
True
Per últim els mètodes de frozenset
:
fset1.copy fset1.isdisjoint fset1.symmetric_difference
fset1.difference fset1.issubset fset1.union
fset1.intersection fset1.issuperset