Quién está en los dos clubes
Un conjunto es una colección de elementos distintos, sin orden y sin repeticiones. Con tres operaciones, unión, intersección y diferencia, respondes preguntas sobre listas de personas, de archivos o de usuarios.
La universidad tiene dos listas: el club de ajedrez y el club de cine. ¿Quién está en los dos? ¿Cuántas personas hay en total? Esta lección te da el método.
Al final de esta lección
Nota
Puedo combinar conjuntos y contar sus elementos.
Palabras clave
| Palabra | Qué significa |
|---|---|
| Conjunto | una colección de elementos distintos, sin orden |
| Elemento | un miembro de un conjunto |
| Unión | los elementos que están en uno o en otro conjunto |
| Intersección | los elementos que están en los dos conjuntos |
| Diferencia | los elementos del primer conjunto que no están en el segundo |
| Cardinal | el número de elementos de un conjunto |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Un conjunto no repite elementos
Un conjunto es una colección de elementos distintos. El orden no importa y un elemento no cuenta dos veces. {1, 1, 2} y {2, 1} son el mismo conjunto.
El cardinal de un conjunto es cuántos elementos tiene. El de {1, 2} es 2. Para trabajar, vamos a usar dos clubes de cuatro personas cada uno.
Los dos clubes del ejemplo
| Conjunto | Elementos | Cardinal |
|---|---|---|
| Ajedrez | Ana, Luis, Marta, Pablo | 4 |
| Cine | Diego, Laura, Marta, Pablo | 4 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Entra en la carpeta de trabajo
cd ~/archSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Escribe la lista del ajedrez
printf 'ana\nluis\nmarta\npablo\n' > ajedrez.txtSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Escribe la lista del cine
printf 'diego\nlaura\nmarta\npablo\n' > cine.txtSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Tres operaciones combinan dos conjuntos
La unión reúne a todos: están en uno o en otro. La intersección deja solo a quienes están en los dos. La diferencia deja a los del primero que no están en el segundo.
En la tabla, cada operación es una pregunta sobre los dos clubes.
Ejemplo resuelto: tres operaciones
| Pregunta | Operación | Resultado | Cardinal |
|---|---|---|---|
| ¿Quién está en alguno? | Ajedrez unión Cine | Ana, Diego, Laura, Luis, Marta, Pablo | 6 |
| ¿Quién está en los dos? | Ajedrez intersección Cine | Marta, Pablo | 2 |
| ¿Quién solo juega al ajedrez? | Ajedrez menos Cine | Ana, Luis | 2 |
| ¿Quién solo va al cine? | Cine menos Ajedrez | Diego, Laura | 2 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
La intersección con comm
comm -12 ajedrez.txt cine.txtSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
La diferencia con comm
comm -23 ajedrez.txt cine.txtSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Cuenta la unión
sort -u ajedrez.txt cine.txt | wc -lSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error frecuente
Advertencia
Mucha gente cree que «A menos B» y «B menos A» dan lo mismo. No es así. Quitar B de A deja a Ana y Luis. Quitar A de B deja a Diego y Laura. La diferencia depende del orden.
Para contar la unión, no cuentes dos veces
Si sumas los cardinales de los dos clubes, 4 + 4 = 8, cuentas dos veces a quienes están en los dos. Para corregirlo, resta la intersección.
Esta es la inclusión y exclusión: cardinal de la unión = cardinal de A + cardinal de B − cardinal de la intersección. Aquí, 4 + 4 − 2 = 6.
Dos formas de contar la unión
python3 -c "a = {'ana', 'luis', 'marta', 'pablo'}; c = {'diego', 'laura', 'marta', 'pablo'}; print(len(a | c), len(a) + len(c) - len(a & c))"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.