DMarlon Studio

Lección 14 · 14 de 20

Conjuntos · Python

Quite repetidos con los conjuntos (set) de Python y compare grupos con intersección, unión y diferencia: quién está en cada club.

Python · Conjuntos en DMarlon Studio: el código del ejemplo y su salida en la terminal

Un conjunto (set) guarda cada valor una sola vez. set(visits) convierte la lista de seis visitas en un conjunto de tres personas: los repetidos desaparecen solos.

Los conjuntos no tienen orden, y al escribirlos los elementos pueden salir en cualquier orden. Por eso el ejemplo usa sorted(), que devuelve una lista ordenada con sus elementos y así la salida es siempre la misma.

Un conjunto también se escribe entre llaves, como chess y football. Con ellos se hacen operaciones de conjuntos: & (intersección) da quién está en los dos clubes; | (unión), quién está en alguno; - (diferencia), quién está solo en ajedrez, y ^, quién está en uno solo de los dos.

add() añade un elemento; si ya estaba, como ben, no pasa nada. discard() lo quita sin dar error aunque no esté. Y in comprueba si un elemento pertenece, mucho más rápido que en una lista larga.

Código · main.py

# A set keeps each value only once. It uses { } or set().visits = ["ana", "ben", "ana", "carla", "ben", "ana"]people = set(visits)print("Visits:", len(visits), "| Different people:", len(people))# A set has no order: sorted() gives a sorted list to print.print("Who came:", sorted(people))# Two clubs at school: who is in each one?chess = {"ana", "ben", "carla", "dani"}football = {"ben", "dani", "eva", "fran"}print("Both clubs:", sorted(chess & football))print("Any club:", sorted(chess | football))print("Only chess:", sorted(chess - football))print("Just one club:", sorted(chess ^ football))# add() and discard() change the set.football.add("ana")football.add("ben")         # already there: nothing changesfootball.discard("fran")print("Football now:", sorted(football))print("Is eva in chess?", "eva" in chess)

Salida · python3 main.py

Visits: 6 | Different people: 3
Who came: ['ana', 'ben', 'carla']
Both clubs: ['ben', 'dani']
Any club: ['ana', 'ben', 'carla', 'dani', 'eva', 'fran']
Only chess: ['ana', 'carla']
Just one club: ['ana', 'carla', 'eva', 'fran']
Football now: ['ana', 'ben', 'dani', 'eva']
Is eva in chess? False

Para recordar

  • Un set no guarda repetidos ni tiene orden.
  • set(lista) quita los duplicados de una lista.
  • & común, | todos, - diferencia, ^ solo en uno.
  • sorted() da una lista ordenada para escribir el conjunto.

Ejercicio

Cree un tercer club, music, y escriba quién está en los tres clubes y quién está en ajedrez o en música pero no en fútbol.