Set (Conjunt)
Una alternativa a les llistes és el set (conjunt); que permeten agrupar elements amb aquestes carecteristiques.
- S’utilitzen quan vols tenir un conjunt d’elements que no es repeteixin.
- Els elements no tenen ordre, (realment tenen ordre d’inserció), quan començes a utilitzarlos amb diferents operacions, aquest ordre es pot perdre. És una de les limitacions respecte les llistes.
- Es poden realitzar operacions d’àlgebra entre conjunts: unió, intersecció, diferència …
Creem un set, i hi afegim elements, fixem-nos que encara que li afegim elements duplicats simplement no els afegeix.
num_set: set = set()num_set.add(1)num_set.add(1)num_set.add(1)num_set.add(2)num_set.add(2)num_set2
La longitud s’obté amb el mètode len, com la llista.
len(num_set)2
Si volem treure l’últim element, usem pop.
num_set.pop()1
Operacions de conjunts
seta:set = {1,2,3}setb:set = {3,4,5}setasetb3 5
Fem la union, i així de pas eliminem els duplicats.
seta.union(setb)seta | setb5
Si volem trobar ràpidament els únics elements que estan als 2 conjunts:
seta.intersection(setb)seta & setb3
Si volem eliminar els duplicats d’una llista, la podem passar a un set.
types_list = ["journal","others","journal","journal","journal","others"]types_set = set(types_list)types_setothers
L’ús de sets és menys habitual que el de les llistes, però ja heu vist com ens facilita l’eliminació de duplicats i operacions de conjunts.
Activitat, set.
1.- Dues ofertes de feina que ens interessen demanen dominar aquestes tecnologies. Mostra el conjunt de tecnologies sencer sense duplicats i el conjunt de tecnologies que demanen en ambdós ofertes.
oferta1 = ["Python", "FastAPI", "Bokeh", "Angular", "PostgreSQL"]oferta2 = ["Python", "MariaDB", "PostgreSQL", "FastAPI", "Flask", "Plotly", "React"]Sortida esperada:
Llista tecnologies :{'MariaDB', 'Plotly', 'Angular', 'Python', 'PostgreSQL', 'Flask', 'React', 'Bokeh', 'FastAPI'}Llista tecnologies comunes:{'Python', 'PostgreSQL', 'FastAPI'}soferta1 = set(oferta1)soferta2 = set(oferta2)print(f"Llista tecnologies :\n {soferta1.union(soferta2)}")print(f"Llista tecnologies comunes:\n {soferta1.intersection(soferta2)}")