Python - Set

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_set
2

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}
seta
setb
3 5

Fem la union, i així de pas eliminem els duplicats.

seta.union(setb)
seta | setb
5

Si volem trobar ràpidament els únics elements que estan als 2 conjunts:

seta.intersection(setb)
seta & setb
3

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_set
others

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'}