From 40f49dc37e46d3631fda37a99d790422c10cffda Mon Sep 17 00:00:00 2001
From: Ekaitz Zarraga <ekaitz@elenq.tech>
Date: Thu, 21 Nov 2019 14:03:29 +0100
Subject: add sets to Types

---
 src/02_datos.md | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

(limited to 'src')

diff --git a/src/02_datos.md b/src/02_datos.md
index 981a359..fb5f451 100644
--- a/src/02_datos.md
+++ b/src/02_datos.md
@@ -338,6 +338,29 @@ seguida.
 8.0
 ```
 
+#### Set
+
+Los *sets* son muy similares a las listas y tuplas, pero con dos
+peculiaridades:
+
+- Sus valores son únicos. No pueden repetirse.
+- No están ordenados
+
+Estas dos características tan estrictas, lejos de ser limitantes, aportan una
+mejora radical en su rendimiento. Buscar elementos en un set es extremadamente
+eficiente y se usan principalmente para esa labor.
+
+Si quieres validar en algún momento que un valor es válido para un conjunto de
+valores, el set es el tipo de dato que estás buscando.
+
+Los sets se declaran también usando las llaves, como un diccionario, pero no
+usan claves.
+
+```
+>>> {"a", "b", 1}
+{'a', 1, 'b'}
+```
+
 ## Conversión
 
 Ahora que conoces los valores sé que quieres saber cómo cambiar de uno a otro.
@@ -371,12 +394,19 @@ ValueError: invalid literal for int() with base 10: 'hola'
 [1, 2, 3]
 >>> dict((("a", 1),("b", 2)))
 {'a': 1, 'b': 2}
+>>> set([1,2,2,3,4,4,4,4,4])
+{1, 2, 3, 4}
 ```
 
 Los propios nombres de las funciones son bastante representativos de a qué tipo
 convierten. Si quieres saber más puedes ejecutar `help(nombre)` y ver qué te
 cuenta la ayuda.
 
+> NOTA: Fíjate que si conviertes una secuencia de valores repetidos a *set*
+> únicamente almacena los que no se repiten. Es uno de los usos más comunes que
+> tienen.
+
+
 ## Operadores
 
 Ahora que sabes el contexto en el que vas a jugar, necesitas poder alterar los
-- 
cgit v1.2.3