1 00:00:01,370 --> 00:00:09,310 Bueno, estamos aquí en... vamos a hablar de la cuarta unidad de Python, en la que ya vamos a tratar las colecciones. 2 00:00:10,550 --> 00:00:15,230 Principalmente estas cuatro, cadenas de caracteres, listas, tuplas y diccionario. 3 00:00:16,129 --> 00:00:18,410 Ya sabéis que las cadenas de caracteres son como strings. 4 00:00:19,969 --> 00:00:27,969 Luego las listas serían como una especie de array que podéis ver en C o en Java, 5 00:00:27,969 --> 00:00:30,230 pero son diferentes 6 00:00:30,230 --> 00:00:32,289 porque los arrays en C y en Java 7 00:00:32,289 --> 00:00:33,250 son 8 00:00:33,250 --> 00:00:36,369 elementos del mismo tipo 9 00:00:36,369 --> 00:00:37,429 ¿vale? 10 00:00:37,530 --> 00:00:39,590 si son cadenas de 11 00:00:39,590 --> 00:00:41,909 son caracteres 12 00:00:41,909 --> 00:00:42,950 o son 13 00:00:42,950 --> 00:00:44,829 integer o float 14 00:00:44,829 --> 00:00:46,950 pero son del mismo tipo 15 00:00:46,950 --> 00:00:49,490 sin embargo en Python sí que pueden ser 16 00:00:49,490 --> 00:00:50,969 diferentes tipos, lo vamos a ver 17 00:00:50,969 --> 00:00:52,369 luego tenemos las tuplas 18 00:00:52,369 --> 00:00:55,329 que serían como listas pero 19 00:00:55,329 --> 00:00:57,090 inmutables, ¿esto qué significa? 20 00:00:57,969 --> 00:01:00,009 Pues que son como constantes, ¿verdad? 21 00:01:00,829 --> 00:01:05,670 Una vez que las inicializas, tú no vas a poder coger un método 22 00:01:05,670 --> 00:01:09,810 o le vas a poder asignar otro elemento a una posición. 23 00:01:10,609 --> 00:01:11,829 Por eso son inmutables, ¿no? 24 00:01:12,230 --> 00:01:15,090 Te va a decir que no te deja al intentar ejecutarlo. 25 00:01:15,530 --> 00:01:16,629 ¿Y esto para qué es útil, verdad? 26 00:01:17,629 --> 00:01:27,170 Pues pensad que hay ciertos datos que tú vas a tratar en el código, 27 00:01:27,170 --> 00:01:30,370 pero quizás no quieras que se cambien porque son cosas que son fijas. 28 00:01:31,090 --> 00:01:32,370 Entonces utilizamos las tuplas. 29 00:01:33,030 --> 00:01:36,730 Y también es conveniente utilizar las tuplas porque son más eficientes que las listas. 30 00:01:37,170 --> 00:01:39,209 Entonces, si tenemos elementos que no van a cambiar, 31 00:01:39,430 --> 00:01:42,810 pues deberíamos utilizar tuplas por esta razón precisamente. 32 00:01:43,689 --> 00:01:48,609 Un ejemplo que he pensado yo por que lo visualicéis 33 00:01:48,609 --> 00:01:52,849 podría ser los típicos combos de comida rápida, ¿verdad? 34 00:01:53,430 --> 00:01:55,329 Que te dicen combo 1, combo 2, combo 3, 35 00:01:55,329 --> 00:02:00,090 que te entran patatas, hamburguesas, refrescos, lo que sea. 36 00:02:00,829 --> 00:02:04,909 Esos combos, en general, no van a cambiar. 37 00:02:05,189 --> 00:02:08,050 Los estableces y luego, a partir de esos combos, 38 00:02:08,169 --> 00:02:09,270 si alguien te pide el combo 1, 39 00:02:10,050 --> 00:02:12,349 tú no vas a coger y le vas a modificar. 40 00:02:12,710 --> 00:02:13,870 Es el combo 1 y ya está. 41 00:02:14,430 --> 00:02:17,129 Y entonces, con ese combo 1 lo vas a facturar, 42 00:02:17,550 --> 00:02:19,229 se lo vas a entregar, etc. 43 00:02:19,229 --> 00:02:20,629 Vas a hacer ciertas operaciones, 44 00:02:20,830 --> 00:02:22,430 pero sin cambiar el contenido del combo. 45 00:02:23,409 --> 00:02:25,069 Para eso se utilizan las tuplas. 46 00:02:25,330 --> 00:02:34,250 Y luego tenemos los diccionarios, que los diccionarios en Java serían como las hash table, que son elementos clave-valor. 47 00:02:34,830 --> 00:02:45,909 Entonces, esto es como muy útil, ¿verdad? Porque cuando veamos programación orientada a objetos, que con ese tipo de programación ya es más potente, podemos hacer más cosas, 48 00:02:46,710 --> 00:02:50,789 pues podréis imaginar que si la clave es el DNI y el valor es la persona, 49 00:02:51,229 --> 00:02:54,330 pues con el DNI puedo obtener un objeto que sea persona 50 00:02:54,330 --> 00:03:07,250 y esa persona tendrá todos los atributos de edad, peso, localización, ciudad de nacimiento, lo que sea. 51 00:03:08,270 --> 00:03:10,030 Entonces, clave y valor. 52 00:03:10,909 --> 00:03:11,889 Vamos un poco con el tema. 53 00:03:11,889 --> 00:03:16,550 pues eso, ya tenéis abierta la unidad 4 54 00:03:16,550 --> 00:03:17,870 aquí tenéis el contenido 55 00:03:17,870 --> 00:03:18,909 y os he subido 56 00:03:18,909 --> 00:03:22,310 esto que son 57 00:03:22,310 --> 00:03:24,569 códigos de colecciones 58 00:03:24,569 --> 00:03:27,229 que lo he escrito yo 59 00:03:27,229 --> 00:03:29,689 para que tengáis algo por lo que empezar 60 00:03:29,689 --> 00:03:31,310 y ver un poco como 61 00:03:31,310 --> 00:03:33,370 funcionan las funciones 62 00:03:33,370 --> 00:03:35,389 que tratan en el contenido 63 00:03:35,389 --> 00:03:37,810 y bueno 64 00:03:37,810 --> 00:03:39,530 porque siempre es más fácil 65 00:03:39,530 --> 00:03:41,430 empezar con algo que está hecho 66 00:03:41,430 --> 00:03:45,189 es como el pánico del escritor a las hojas en blanco 67 00:03:45,189 --> 00:03:48,090 y de hecho si alguna vez trabajáis de programador 68 00:03:48,090 --> 00:03:49,889 o ya habéis trabajado de programador 69 00:03:49,889 --> 00:03:54,770 normalmente no te dan un código para que empieces 70 00:03:54,770 --> 00:03:57,550 es raro empezar en un proyecto desde cero 71 00:03:57,550 --> 00:04:00,530 normalmente ya te dan, entras en un proyecto empezado 72 00:04:00,530 --> 00:04:03,050 o te dan ya código hecho 73 00:04:03,050 --> 00:04:05,590 al que tú tienes que hacer ciertas modificaciones 74 00:04:05,590 --> 00:04:08,650 entonces eso es como mucho más fácil porque entiendes 75 00:04:08,650 --> 00:04:10,770 vas entendiendo cómo funciona el código 76 00:04:10,770 --> 00:04:20,410 cómo se programa en esa empresa, las interdependencias que tienen y a partir de ahí, una vez que lo entiendes, es cuando le metes mano, ¿vale? 77 00:04:20,410 --> 00:04:30,269 Pues aquí es un poco igual, os voy a dejar, bueno, ya os he dejado este código que incluye ejemplos de cadenas, listas, tuplas y diccionarios, como ya hemos visto 78 00:04:30,269 --> 00:04:33,250 y a partir de aquí pues podéis ir cacharreando, ¿vale? 79 00:04:35,029 --> 00:04:36,829 Entonces, vamos a empezar con las cadenas. 80 00:04:39,209 --> 00:04:42,129 Aquí he declarado dos cadenas, cadena 1 y cadena 2. 81 00:04:44,740 --> 00:04:50,279 Entonces, ya veis que como ya hemos ido haciendo a lo largo de este curso, 82 00:04:50,399 --> 00:04:57,779 porque claro, ya hemos operado en realidad, hemos hecho ya cosillas con cadenas, listas y diccionarios anteriormente, ¿verdad? 83 00:04:57,779 --> 00:05:16,060 Ahora lo vamos a ver un poco más en particular. Entonces, el problema de las cadenas es que te lo toma todo literal. Pero cuando le metes un slash, el intérprete ya entiende que aquí es un código especial. 84 00:05:16,060 --> 00:05:21,699 Entonces, slash n es un salto de pantalla. Por ejemplo, slash t es esta ovulación. 85 00:05:22,420 --> 00:05:26,180 Entonces, ya aquí entiende que tenemos hola y un salto de pantalla. 86 00:05:27,480 --> 00:05:34,000 Aquí en cadena le he dejado un espacio al principio y uno al final porque quería que vierais cómo funciona la función strip. 87 00:05:34,939 --> 00:05:38,620 Como indico aquí, elimina espacios al principio y final de la cadena. 88 00:05:39,420 --> 00:05:49,980 Entonces, si ejecutamos esto, aquí estamos. Eliminar espacios. 89 00:05:49,980 --> 00:06:09,399 ¿Ves? Los espacios que he puesto aquí al principio y al final desaparecen. Entonces, vamos un poco uno por uno. Tenemos concatenar exacta línea y vamos a unir la cadena 1 y la cadena 2 con el operador más. 90 00:06:09,399 --> 00:06:14,259 Esto se hace en muchos lenguajes de programación 91 00:06:14,259 --> 00:06:15,660 Como C o Java 92 00:06:15,660 --> 00:06:16,839 Es algo normal 93 00:06:16,839 --> 00:06:18,600 Que para concretar cadenas 94 00:06:18,600 --> 00:06:21,060 Utilizamos el operador más 95 00:06:21,060 --> 00:06:23,300 Y ya está 96 00:06:23,300 --> 00:06:25,379 Luego otro salto de línea 97 00:06:25,379 --> 00:06:26,800 Luego slice 98 00:06:26,800 --> 00:06:28,439 Que es como trozo 99 00:06:28,439 --> 00:06:30,720 Hacer una porción 100 00:06:30,720 --> 00:06:32,879 Entonces 101 00:06:32,879 --> 00:06:36,480 Aquí lo que vamos a hacer es un corte 102 00:06:36,480 --> 00:06:37,199 De la cadena 103 00:06:37,199 --> 00:06:38,379 De la cadena 2 104 00:06:38,379 --> 00:06:49,319 Entonces cogemos de la 0 a la 5. Si nos ponemos aquí, contamos 1, 2, 3, 4 y 5. Hasta aquí. Y es lo que nos saca. ¿Vale? 105 00:06:49,319 --> 00:07:11,300 Luego, ¿qué más tenemos? Tenemos subcadena. Por ejemplo, aquí, para poner vida entre comillas, tenemos que poner slash, ¿vale? Porque si no, se va a liar, va a pensar que estas comillas es el fin de esta cadena. 106 00:07:11,300 --> 00:07:14,980 pero si le ponemos slash comillas 107 00:07:14,980 --> 00:07:19,060 ya sé que te lo mete dentro de la cadena 108 00:07:19,060 --> 00:07:21,639 y te lo pone entre comillas 109 00:07:21,639 --> 00:07:23,800 es el truquillo que se utiliza 110 00:07:23,800 --> 00:07:26,300 que os lo he puesto ahí para que lo veáis también 111 00:07:26,300 --> 00:07:30,920 entonces, aquí lo que tenemos 112 00:07:30,920 --> 00:07:33,860 es que quiero encontrar la palabra vida 113 00:07:33,860 --> 00:07:35,319 dentro de la cadena 2 114 00:07:35,319 --> 00:07:39,620 y como esto va a devolver 115 00:07:39,620 --> 00:07:41,819 un número 116 00:07:41,819 --> 00:07:44,639 que en este caso es 17 117 00:07:44,639 --> 00:07:46,259 porque la cadena vida 118 00:07:46,259 --> 00:07:47,699 si nos ponemos aquí está el 119 00:07:47,699 --> 00:07:50,439 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 120 00:07:50,439 --> 00:07:52,500 11, 12, 13, 14, 15, 16 121 00:07:52,500 --> 00:07:54,120 y 17, empieza ahí 122 00:07:54,120 --> 00:07:54,600 ¿verdad? 123 00:07:56,439 --> 00:07:58,079 nos dice que ha encontrado 124 00:07:58,079 --> 00:08:00,100 la palabra vida en la posición 17 125 00:08:00,100 --> 00:08:02,259 y como aquí estamos concatenando 126 00:08:02,259 --> 00:08:03,259 cadenas 127 00:08:03,259 --> 00:08:05,540 lo tengo que pasar a stream 128 00:08:05,540 --> 00:08:06,839 por eso lo utilizo 129 00:08:06,839 --> 00:08:09,360 que también podemos utilizar un 130 00:08:09,360 --> 00:08:11,720 fString 131 00:08:11,720 --> 00:08:13,220 y ponerlo aquí 132 00:08:13,220 --> 00:08:15,819 entre cochetes, sí, claro que sí 133 00:08:15,819 --> 00:08:17,339 ya lo hemos utilizado antes 134 00:08:17,339 --> 00:08:19,620 pero bueno, están estas dos formas 135 00:08:19,620 --> 00:08:23,220 luego tenemos la función upper 136 00:08:23,220 --> 00:08:25,660 para poner la cadena en mayúscula 137 00:08:25,660 --> 00:08:27,879 lower para poner la cadena 138 00:08:27,879 --> 00:08:29,040 en minúscula 139 00:08:29,040 --> 00:08:31,199 strip, que ya lo hemos 140 00:08:31,199 --> 00:08:33,960 tratado, y luego replace 141 00:08:33,960 --> 00:08:35,720 que aquí lo que estamos 142 00:08:35,720 --> 00:08:37,399 haciendo es cogiendo la cadena 2 143 00:08:37,399 --> 00:08:44,000 y en todas las que sean A, como esta, esta y esta, lo vamos a cambiar por E. 144 00:08:44,960 --> 00:08:51,429 Entonces, aquí ya pone cómo TV le vive, ¿vale? 145 00:08:56,820 --> 00:09:01,700 Luego tenemos otras fórmulas para concatenar, por ejemplo, con el join, ¿vale? 146 00:09:01,700 --> 00:09:15,860 Si tengo aquí hola, una lista con hola y mundo, puedo decir que a esto le concatene el i, ¿vale? 147 00:09:17,620 --> 00:09:22,779 Entonces, lo que va a hacer es sacar hola y mundo, ¿vale? Con el join. 148 00:09:26,250 --> 00:09:32,169 Luego tenemos las fstream, que es lo que habíamos comentado, que esto también se puede hacer con fstream. 149 00:09:32,169 --> 00:09:36,909 Y con el .2f lo que hacemos es que saque solo los dos primeros decimales. 150 00:09:40,590 --> 00:09:56,809 Y luego también tenemos la función split, que lo que hace es dividir la frase en palabras, ¿vale? 151 00:09:56,809 --> 00:10:07,049 En una lista de palabras, con la cual luego podríamos manipularla y utilizarla en nuestro provecho, dependiendo de lo que se necesite, ¿vale? 152 00:10:07,049 --> 00:10:29,450 Esto serían las cadenas. Vamos con las listas. Aquí tenemos una lista simple en la que numeramos del 1 a 5, por ejemplo. Luego tenemos listas complejas que tienen dos elementos por posición y de diferente tipo, como hemos dicho antes, que pueden ser como arrays. 153 00:10:29,450 --> 00:10:48,509 Esto sería un array, pero esto sí que es una lista con tipos diferentes. Aquí tenemos números, texto con un string, un booleano, un float. Entonces podemos tener varias combinaciones en este sentido. Voy aquí a limpiar el terminal para que se vea fácil. 154 00:10:48,509 --> 00:11:10,529 Vale, aquí me gustaría pararme en las funciones lambda, map y filter, ¿vale? Entonces, las funciones lambda es como si hiciéramos una función pero temporal, no es algo que va a estar ahí permanente para que lo utilices, ¿no? 155 00:11:10,529 --> 00:11:15,570 Por ejemplo aquí, con este lambda lo que hacemos es que por cada elemento le sumamos uno. 156 00:11:15,950 --> 00:11:26,789 Podríamos hacer por ejemplo una función que se llamara suma1 y le pusiéramos algo parecido a esto, que retornara un entero. 157 00:11:27,950 --> 00:11:31,710 Y le pasaríamos el número al que quiere sumar. 158 00:11:31,710 --> 00:11:43,470 Pero esto es mucho más eficiente porque solo se va a ejecutar aquí y luego se va a destruir y se puede utilizar de esta forma, ¿no? Para funciones de este tipo. 159 00:11:44,029 --> 00:11:53,690 Entonces, map, como indico ahí arriba, permite aplicar una operación a cada elemento de una lista. Vale, entonces recibe dos parámetros. 160 00:11:53,690 --> 00:11:58,690 El primero es la función aplicar y el segundo es la lista donde la vamos a aplicar. 161 00:11:59,389 --> 00:12:04,649 Entonces aquí con el lambda lo que estamos diciendo es que por cada elemento le sume uno. 162 00:12:05,409 --> 00:12:07,029 ¿A qué? A la lista simple. 163 00:12:08,230 --> 00:12:14,720 Entonces si lo ejecutamos vamos a ver que está sumándole uno a la lista. 164 00:12:15,320 --> 00:12:18,279 2, 3, 4, 5, 6, cuando antes empezaba por el 1. 165 00:12:22,509 --> 00:12:24,950 Luego seguimos con el filter. 166 00:12:24,950 --> 00:12:35,450 Y dice, filter, comprueba los elementos de nuestra lista si cumplen una determinada condición y si lo cumplen, la mete en otra lista resultado. 167 00:12:38,580 --> 00:12:42,720 Entonces, el resultado va a ser una lista diferente. 168 00:12:43,519 --> 00:12:45,559 Una lista resultado, como pongo yo aquí. 169 00:12:46,440 --> 00:12:51,559 Entonces, lo que devuelva hay que transformarlo a lista. 170 00:12:54,159 --> 00:12:57,220 Y se utiliza de la misma manera. 171 00:12:57,220 --> 00:12:59,659 se utiliza filter, la condición 172 00:12:59,659 --> 00:13:01,940 que tiene que cumplir para que ese elemento 173 00:13:01,940 --> 00:13:03,620 se meta en la nueva lista 174 00:13:03,620 --> 00:13:05,740 y la lista que vamos a chequear. 175 00:13:06,940 --> 00:13:07,039 ¿Vale? 176 00:13:07,559 --> 00:13:09,519 Aquí lo que estamos haciendo es que solo 177 00:13:09,519 --> 00:13:11,379 queremos los 178 00:13:11,379 --> 00:13:15,220 los pares. 179 00:13:16,299 --> 00:13:16,779 ¿Vale? 180 00:13:16,919 --> 00:13:19,200 Entonces se mete el 2 181 00:13:19,200 --> 00:13:21,039 y el 4. La verdad es que 182 00:13:21,039 --> 00:13:22,419 se tendría que meter el 6 también. 183 00:13:24,960 --> 00:13:26,179 La verdad es que no sé... 184 00:13:26,179 --> 00:13:28,659 Bueno, ya sé por qué o sí. 185 00:13:28,659 --> 00:13:31,159 lista pares 186 00:13:31,159 --> 00:13:33,600 aquí lista simple 187 00:13:33,600 --> 00:13:36,059 claro, lista simple la hemos modificado 188 00:13:36,059 --> 00:13:37,419 no, no la hemos modificado 189 00:13:37,419 --> 00:13:39,960 ah, claro, por eso 190 00:13:39,960 --> 00:13:42,259 claro, es que la lista simple 191 00:13:42,259 --> 00:13:42,919 no es esta 192 00:13:42,919 --> 00:13:45,120 porque esta es lista plus 193 00:13:45,120 --> 00:13:47,100 la lista simple es esta de aquí 194 00:13:47,100 --> 00:13:49,960 que va del 1 al 5 195 00:13:49,960 --> 00:13:51,860 y por eso solo nos saca el 2 y el 4 196 00:13:51,860 --> 00:13:53,779 vale, claro 197 00:13:53,779 --> 00:13:56,100 porque va del 1 al 5 198 00:13:56,100 --> 00:13:57,500 que es la que está cogiendo 199 00:13:57,500 --> 00:14:02,320 Claro, si hubiera puesto lista plus aquí, pues sí que estaría cogiendo el 4 y el 6, exactamente. 200 00:14:03,200 --> 00:14:10,340 Pues eso, ponemos aquí con un lambda la condición que tiene que cumplir para que ese elemento se incorpore a la nueva lista. 201 00:14:11,860 --> 00:14:12,059 ¿Vale? 202 00:14:14,740 --> 00:14:18,080 Entonces, un pequeño programilla para ver cómo funcionan las listas. 203 00:14:19,019 --> 00:14:22,100 Aquí tenemos una lista vacía de frutas. 204 00:14:23,179 --> 00:14:23,279 ¿Vale? 205 00:14:23,840 --> 00:14:26,039 Se quiere igual a true para que se meta por primera vez. 206 00:14:26,039 --> 00:14:29,159 Y pedimos una nueva fruta. 207 00:14:29,320 --> 00:14:41,500 Entonces, si esta nueva fruta no está en frutas, la vamos a añadir con append. 208 00:14:41,919 --> 00:14:45,340 Con append añades nuevos elementos a la lista y la imprimimos. 209 00:14:46,080 --> 00:14:47,580 Que sí que está en frutas. 210 00:14:48,320 --> 00:14:50,120 Vamos a ver en qué posición está. 211 00:14:54,830 --> 00:14:58,710 Entonces, vamos a imprimir la posición. La fruta ya existe en posición tal. 212 00:15:00,960 --> 00:15:02,940 Y vamos a pedir si quiere continuar. 213 00:15:03,399 --> 00:15:05,419 Si dice que sí, pues volverá. 214 00:15:05,820 --> 00:15:06,799 Y si dice que no, saldrá. 215 00:15:06,899 --> 00:15:07,779 Así de sencillo. 216 00:15:08,220 --> 00:15:12,899 Entonces, si ponemos manzana, me la muestra. 217 00:15:13,279 --> 00:15:14,500 Pera, uva. 218 00:15:16,500 --> 00:15:17,659 Ahora miramos pera de nuevo. 219 00:15:19,000 --> 00:15:20,899 Y me dice que está en la posición 1. 220 00:15:22,399 --> 00:15:26,240 Porque manzana está en la posición 0 y pera está en la posición 1. 221 00:15:28,600 --> 00:15:28,779 ¿Vale? 222 00:15:29,779 --> 00:15:32,279 Ya sabéis cómo funciona. 223 00:15:33,480 --> 00:15:34,659 Vamos con las tuplas. 224 00:15:35,340 --> 00:15:36,740 Vamos a borrar el terminal de nuevo. 225 00:15:39,909 --> 00:15:44,710 Entonces, como indico aquí, las tuplas son más rápidas que las listas y son 226 00:15:44,710 --> 00:15:50,629 inmutables, que no pueden cambiar, ¿vale? Pueden aceptar varios tipos, íntegrar un 227 00:15:50,629 --> 00:15:57,090 string, o una lista, un float... Entonces, 228 00:15:57,570 --> 00:16:03,950 ponemos un string, o sea, sí, una cadena, ¿vale? Como esta, frase para trabajar con 229 00:16:03,950 --> 00:16:09,710 tuplas, y la convertimos a tupla, con la función tuple, ¿vale? 230 00:16:09,909 --> 00:16:17,789 Ya se ha convertido en una tupla, que quiere decir que esta tupla no la vamos a poder modificar. 231 00:16:18,190 --> 00:16:19,029 Y la imprimimos. 232 00:16:22,159 --> 00:16:23,340 Como veis, se imprime así. 233 00:16:27,419 --> 00:16:28,259 Luego, ¿qué más tenemos? 234 00:16:29,019 --> 00:16:32,860 Tupla numérica, del 1 al 9. 235 00:16:32,860 --> 00:16:38,539 Entonces, una particularidad que tiene Python, tanto para listas como para tuplas, 236 00:16:39,179 --> 00:16:44,159 es que los índices pueden tomar números, valores negativos. 237 00:16:44,580 --> 00:16:52,059 que es bastante curioso, ¿verdad? Porque normalmente lo que vemos en Java o en .NET es que va de 0 a infinito, 238 00:16:52,679 --> 00:16:57,019 dependiendo del número de elementos que tenga el array o la lista, ¿verdad? 239 00:16:57,240 --> 00:17:02,360 Pero aquí puede coger números negativos, y eso quiere decir que va a empezar desde el final. 240 00:17:02,639 --> 00:17:09,200 Entonces, este es el elemento menos 1, este es el elemento menos 2, y por eso nos saca 8, 241 00:17:09,559 --> 00:17:12,400 porque aquí estamos sacando el elemento menos 2. 242 00:17:12,400 --> 00:17:18,079 y bueno, pues lo que tenemos 243 00:17:18,079 --> 00:17:21,839 en las tuplas es una colección 244 00:17:21,839 --> 00:17:25,460 de read-only, o sea, solo vamos a poder 245 00:17:25,460 --> 00:17:30,079 leer información de la tupla, no la vamos a poder modificar por todo lo que he 246 00:17:30,079 --> 00:17:34,240 explicado. Entonces, ¿qué funciones 247 00:17:34,240 --> 00:17:37,940 tenemos? Tenemos la de length, que nos dice que la longitud son 248 00:17:37,940 --> 00:17:41,880 32 caracteres, es decir, te dice la longitud de 249 00:17:41,880 --> 00:17:53,960 de la tupla, el valor mínimo, que es 1, y el valor máximo, que es 9, ¿vale? Entonces, vamos con el diccionario. 250 00:17:55,019 --> 00:18:04,579 Los diccionarios son colecciones de clave-valor, como la hashtag en Java, si alguno ha trapichado con Java. 251 00:18:04,579 --> 00:18:16,880 Y a ver... Sí. Tenemos clave, valor. Nombre, Juan. Edad, 23. Ciudad, Madrid. 252 00:18:18,279 --> 00:18:26,099 Vale, entonces, si queremos acceder a los elementos, no accedemos y decimos diccionario 1 para saber la edad. 253 00:18:26,099 --> 00:18:28,299 No, decimos diccionario edad. 254 00:18:29,920 --> 00:18:31,920 Y con esto lo que sacamos es el valor. 255 00:18:33,799 --> 00:18:37,720 Llamamos a la clave y obtenemos el valor. 256 00:18:38,400 --> 00:18:39,339 Nombre, Juan. 257 00:18:39,900 --> 00:18:41,079 Ciudad, Madrid. 258 00:18:43,220 --> 00:18:50,400 Entonces, también se puede crear un diccionario de esta forma o con la función dict. 259 00:18:51,740 --> 00:18:55,059 Entonces tenemos una persona con estos atributos. 260 00:18:57,849 --> 00:19:00,190 Clave, valor, clave, valor, clave, valor. 261 00:19:03,000 --> 00:19:07,980 Lo que tenemos entonces es que persona es un diccionario, 262 00:19:09,140 --> 00:19:13,759 por lo tanto podemos utilizar funciones de los diccionarios, 263 00:19:13,759 --> 00:19:19,539 como son keys, que lo que te hace es sacar todas las claves de ese diccionario, 264 00:19:19,660 --> 00:19:21,319 nombre, edad y ciudad. 265 00:19:22,720 --> 00:19:26,579 Te la va a sacar, lo suyo es transformarlo en una lista, 266 00:19:26,579 --> 00:19:36,619 porque son listas de elementos. Luego tenemos los valores con values, que vamos a hacer lo mismo, y luego el diccionario entero. 267 00:19:36,880 --> 00:19:43,519 Para sacar el diccionario entero lo que vamos a hacer es utilizar la función items, ¿vale? Y ya te sacaría el diccionario entero. 268 00:19:44,799 --> 00:19:54,420 ¿Cómo recorremos un diccionario? Pues de esta manera, for clave valor in persona.items, es decir, que por cada clave valor 269 00:19:54,420 --> 00:19:58,119 en todo el diccionario. 270 00:19:58,319 --> 00:20:01,079 Porque hemos dicho que con persona.items 271 00:20:01,079 --> 00:20:03,059 lo que hacemos es sacar todo el diccionario. 272 00:20:04,440 --> 00:20:06,119 Entonces, pues lo podemos poner así 273 00:20:06,119 --> 00:20:12,220 para que aparezca idéntico a como lo estamos viendo. 274 00:20:15,589 --> 00:20:18,250 Entonces, vale aquí. 275 00:20:19,549 --> 00:20:20,990 Esto es lo que devuelve. 276 00:20:22,410 --> 00:20:25,650 Por cada elemento te dice nombre, dos puntos, valor. 277 00:20:25,650 --> 00:20:27,490 que es lo que estamos sacando 278 00:20:27,490 --> 00:20:30,809 porque aquí con la función pop 279 00:20:30,809 --> 00:20:33,269 lo que hacemos es eliminar la edad 280 00:20:33,269 --> 00:20:37,089 entonces aquí estamos eliminando la edad 281 00:20:37,089 --> 00:20:39,190 si por ejemplo imprimimos 282 00:20:39,190 --> 00:20:40,990 persona aquí 283 00:20:40,990 --> 00:20:45,819 lo que vamos a obtener es 284 00:20:45,819 --> 00:20:48,400 este mismo 285 00:20:48,400 --> 00:20:49,859 nombre 286 00:20:49,859 --> 00:20:54,839 este mismo diccionario con nombre edad ciudad 287 00:20:54,839 --> 00:20:57,259 pero le hemos sustraído edad 288 00:20:57,259 --> 00:21:14,160 Porque hemos utilizado el pop. Y veis aquí que está nombre y ciudad. Sin embargo, ahora con el update lo que hacemos es modificar los datos. Aquí ya estamos añadiendo edad y además añadimos una clave de valor que es nacionalidad española. 289 00:21:14,160 --> 00:21:17,660 Y aquí ya veis que sí que ya se añade 290 00:21:17,660 --> 00:21:19,460 ¿Vale? Entonces 291 00:21:19,460 --> 00:21:21,480 Pues con esto también se pueden hacer 292 00:21:21,480 --> 00:21:22,460 Infinidad de cosas 293 00:21:22,460 --> 00:21:24,799 Y ya estaría 294 00:21:24,799 --> 00:21:27,160 ¿Vale? Son las colecciones que 295 00:21:27,160 --> 00:21:29,380 Como sabéis ya hemos 296 00:21:29,380 --> 00:21:31,900 Utilizado algunas en ejercicios 297 00:21:31,900 --> 00:21:33,299 Anteriores porque son muy útiles 298 00:21:33,299 --> 00:21:34,539 Y muy comunes ¿Verdad? 299 00:21:35,000 --> 00:21:38,039 Y en este tema los vamos a ver un poco con más detenimiento 300 00:21:38,039 --> 00:21:39,299 Así que nada 301 00:21:39,299 --> 00:21:40,180 Ánimo con la tarea 302 00:21:40,180 --> 00:21:43,019 Y nos vemos en la próxima unidad 303 00:21:43,019 --> 00:21:43,940 Adiós 304 00:21:44,160 --> 00:21:45,160 Gracias.