From f4f603af21ef8e747213b028f19d3fa489a00f72 Mon Sep 17 00:00:00 2001 From: Ekaitz Zarraga Date: Tue, 21 Jul 2020 19:33:34 +0200 Subject: Corrections --- es/02_datos.md | 27 ++++++++++++++++++++------- es/03_estructura.md | 14 +++++--------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/es/02_datos.md b/es/02_datos.md index b641a79..8400737 100644 --- a/es/02_datos.md +++ b/es/02_datos.md @@ -325,10 +325,12 @@ Además, los diccionarios no están ordenados así que no se puede suponer que l claves siempre van a estar en el orden en el que se introducen. Para declarar diccionarios es necesario indicar qué claves se quieren usar. Las -claves son de tipo string. En el caso de los diccionarios, además, se utilizan -llaves para definirlos. El acceso a sus valores se realiza con los corchetes, -del mismo modo que en las listas, pero es necesario seleccionar la clave para -acceder. +claves pueden ser de cualquier tipo que se considere *hasheable*[^hasheable], +concepto que se analiza más adelante, aunque normalmente su usan cadenas de +caracteres como claves. + +El acceso a sus valores se realiza con los corchetes, del mismo modo que en las +listas, pero es necesario seleccionar la clave para acceder. Los diccionarios, al igual que las listas, son mutables. Como veremos en seguida. @@ -336,17 +338,23 @@ seguida. ``` python >>> {"nombre": "Guido", "apellido": "Van Rossum", "popularidad": 8.0} {'nombre': 'Guido', 'apellido': 'Van Rossum', 'popularidad': 8.0} ->>> {"nombre": "Guido", "apellido": "Van Rossum", "popularidad": 8.0}["popularidad"] +>>> {"nombre": "Guido", "apellido": "Van Rossum", + "popularidad": 8.0}["popularidad"] 8.0 ``` +[^hasheable]: Los diccionarios son una implementación del concepto conocido + como *hashmap* o *hash-table*. Su funcionamiento interno requiere que las + claves puedan procesarse mediante una función de *hash*. + #### Set -Los *sets* son muy similares a las listas y tuplas, pero con dos +Los *sets* son muy similares a las listas y tuplas, pero con varias peculiaridades: - Sus valores son únicos. No pueden repetirse. -- No están ordenados +- No están ordenados. +- No pueden accederse mediante los corchetes (`[]`). Estas dos características tan estrictas, lejos de ser limitantes, aportan una mejora radical en su rendimiento. Buscar elementos en un set es extremadamente @@ -363,6 +371,11 @@ usan claves. {'a', 1, 'b'} ``` +Otro de los usos más habituales de los sets es el de aplicar teoría de +conjuntos (*set* significa «conjunto»). Los sets pueden combinarse forma +eficiente mediante uniones (*union*), diferencias (*difference*), +intersecciones (*intersection*) y otros métodos descritos en esta teoría. + ## Conversión Ahora que conoces los valores sé que quieres saber cómo cambiar de uno a otro. diff --git a/es/03_estructura.md b/es/03_estructura.md index 9d8cd5e..ba9abdb 100644 --- a/es/03_estructura.md +++ b/es/03_estructura.md @@ -215,25 +215,21 @@ Como mejor se entiende es con unos ejemplos, en este caso vamos usar la función inclusive). Usando la ayuda puedes saber más sobre la función `range`. -> TODO: -> Mejorar este ejemplo, es demasiado simple - ``` python >>> [i**2 for i in range(0, 10)] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> tuple(i**2 for i in range(0, 10)) (0, 1, 4, 9, 16, 25, 36, 49, 64, 81) ->>> { str(i): i**2 for i in range(0, 10)} -{'0': 0, '1': 1, '2': 4, '3': 9, '4': 16, '5': 25, '6': 36, '7': 49, '8': 64, -'9': 81} - +>>> { i: i**2 for i in range(0, 10)} +{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81} >>> [i**2 for i in range(0, 10) if i > 5 ] [36, 49, 64, 81] ``` Como ves, en el caso de los diccionarios es necesario crear las claves también. -En este caso las creamos convirtiendo el propio número a string con la función -`str`. +En este caso las creamos desde el propio número, así que se comportará de forma +similar a una lista, ya que los índices serán numéricos. Eso sí, las claves no +estarán ordenadas. En los primeros ejemplos, de una secuencia de números hemos creado una secuencia de números al cuadrado. Pero las *list comprehensions* son más -- cgit v1.2.3