Hola qué tal Bienvenidos a todos a otra entrega de este curso de programación en python en el que nos encontramos abordando en estos vídeos aún la sintaxis básica del lenguaje los comienzos en cualquier lenguaje de programación son duros porque antes de poder hacer cosas interesantes estamos obligados a conocer la sintaxis Y eso pues casi siempre es un poco aburrido Pero bueno no os preocupéis porque espero que pronto nos podamos poner a realizar cosas interesantes con Este lenguaje de momento en este vídeo Vamos a abordar otra estructura fundamental más que son las tuplas si entendimos en el vídeo anterior el concepto de lista y el funcionamiento de las listas no vamos a tener ningún problema con las tuplas porque son unas estructuras muy parecidas a las listas con algunas restricciones las tuplas no son Ni más ni menos que listas inmutables algo inmutable pues es algo que no cambia a lo largo del tiempo en definitiva una tupla es Exactamente igual que una lista en la que no podemos ni Añadir elementos ni eliminar elementos ni mover elementos por eso es inmutable porque no la podemos modificar entonces hay que tener en cuenta que los métodos vistos en el vídeo anterior con las listas no tienen cabida a su uso con las tuplas no podemos utilizar append que era para agregar nuevos elementos extend remove etcétera A pesar de estas restricciones las tuplas sí que permiten realizar ciertas acciones Como por ejemplo sí que permiten extraer caer porciones algo que vimos en el vídeo anterior con las listas Bueno pues con las tuplas también lo podemos hacer y hay que tener en cuenta que el resultado de extraer una porción no es que modifiquemos la tupla en la que estamos extrayendo la porción sino que estamos obteniendo después de extraer esa porción una nueva tupla las tuplas no permiten realizar búsquedas Entonces no podremos utilizar el método Index visto también en el vídeo anterior con las listas pero sí que permite pues comprobar si un elemento se encuentra dentro de una tupla entonces Bueno pues nos damos cuenta de que las tuplas tienen ciertas restricciones respecto a las listas y esas restricciones sí que pueden ser interesantes en algunos escenarios me refiero a que puede ser interesante agregar eliminar Añadir elementos en una lista y Bueno pues uno se pregunta que si una tupla restringe todo eso qué utilidad puede tener no Y bueno pues sí que bajo determinadas circunstancias y escenarios una tupla puede ser muy interesante de momento la primera ventaja que tiene una tupla respecto a una lista Es que la tupla es más rápida cuando hablamos de rapidez no nos referimos a la hora de programarlas no Eso depende en gran medida del programador nos referimos a la hora de ejecutarlas cuando ejecutamos un programa una tupla siempre va a ejecutarse más rápido que una lista y se va a ejecutar más rápido pues por una serie de eh optimizaciones que tienen respecto a las listas Como por ejemplo una tupla siempre va a ocupar menos espacio en memoria que una lista o lo que es lo mismo una tupla va a estar más optimizada va a dar un mayor rendimiento en cuanto a ejecución respecto a una lista En definitiva si tú vas a necesitar almacenar una serie de elementos pero esos elementos esos elementos lo único que vas a hacer con ellos en el futuro es recorrerlos para verlos pues es mucho mejor que utilices una tupla que no una lista si esos elementos que tú necesitas almacenar intuyes o sabes que en un futuro vas a tener que modificarlos eliminar mover agregar etcétera entonces tendrás que hacer una lista unas de las particularidades o funcionalidades que tienen las duplas es que nos van a permitir formatear cadenas lo veremos en un futuro y también que se pueden utilizar como claves en un diccionario esto de momento nos va a sonar a chino porque aún no sabemos lo que es un diccionario lo veremos en el próximo vídeo pero para cuando lo veamos Bueno pues es bueno saber que una tupla se puede utilizar como clave en un diccionario mientras que las listas no permiten hacer eso y bien Cuál es la sintaxis de una tupla a la hora de programarla pues Exactamente igual que la sintaxis de una lista con una pequeña salvedad y es que si recordáis las listas iban siempre entre corch setes mientras que las tuplas van entre paréntesis y además estos paréntesis pueden ser opcionales yo recomiendo ponerlos para No confundirlos pues en determinadas circunstancias Como por ejemplo con los parámetros que puede recibir una función algo que veremos más adelante Pero bueno si se quieren omitir se puede hacer sin problema y a la hora de acceder a los elementos de una tupla lo haremos Exactamente igual a lo que explicamos en el vídeo anterior con la listas es decir los elementos de una tupla comienzan pues eh con un índice o posición cero y pues van incrementándose sucesivamente por ejemplo en esta tupla que tengo en pantalla formada por tres elementos pues tendríamos el elemento con índice o posición cer el elemento un el elemento 2s etcétera y todas las reglas que explicamos en el vídeo anterior Respecto a los índices para las listas es Exactamente igual para la tupla esta diapositiva la he reutilizado del vídeo anterior y pone aquí nombre lista bueno esto sería nombre tupla o el nombre que le quieras dar a la tupla Es decir para nombrar una tupla pues hay que seguir las mismas convenciones que para nombrar listas o para nombrar variables Y bueno pues visto todo esto vamos a trasladar toda esta teoría Pues a unos ejemplos sencillos para verlo sobre código Así que vamos a ello abrimos nuestro editor sublim test o el que estoy utilizando yo en el curso y respecto a esto también tengo que decir unas cosas he recibido muchos comentarios con miles y cientos de preguntas acerca de sublime test Sublime test es un editor más no es imprescindible Como algunos me habéis preguntado utilizar este editor de texto para programar en python podéis utilizar el propio entorno que trae python cuando nos lo descargamos que también viene con su consola pues para programar no y hay muchas alternativas más yo he decidido utilizar Sublime Pues porque es bajo mi punto de vista un muy en editor de texto y sobre todo porque en los 900 vídeos que llevo en el canal desde el primer vídeo hasta el último me habéis preguntado sin cesar que por qué no utilizo Sublime test Bueno pues aquí lo tenéis ya y luego también he recibido comentarios preguntándome Por qué en los primeros vídeos programaba con la consola eh de sublime con sublime reppel y en estos últimos vídeos no estoy utilizando la consola bueno no os preocupéis porque más adelante en el curso veremos la verdadera utilidad de de la consola de sublime repel y de momento Pues eso son cuestiones que no nos deben de preocupar en exceso simplemente debemos memorizar Cuál es la sintaxis de Este lenguaje de programación dicho esto lo primero que voy a hacer va a ser guardar un nuevo archivo file safe as y a este archivo pues lo voy a llamar por ejemplo práctica tuplas punto py y ahora pues vamos a ver cuál sería la sintaxis a la H a hora de crear una tupla muy sencillo lo primero que tenemos que hacer es escoger un nombre para la tupla que puede ser el que queráis respetando las convenciones mencionadas en vídeos anteriores igual ahora abrirías paréntesis y dentro de estos paréntesis los elementos que van a formar parte de esta tupla separados por comas si van a ser elementos de texto pues tendrán que ir entrecomillados y si van a ser valores numéricos pues sin comillas no por ejemplo algo así pues mi nombre y una fecha en concreto no Bueno pues aquí tenemos ya nuestra primera tupla Exactamente igual que una lista pero con paréntesis Si queremos acceder a un elemento en concreto de una tupla pues Exactamente igual a como hacíamos en las listas hay que saber cuál es el índice y el índice se representa entre corchetes Por ejemplo si yo quiero Acceder al elemento con índice dos que es un uno como podéis ver porque este sería el elemento c el un Y el dos pues lo único que tengo que hacer es lo siguiente vamos a poner un print para que lo imprima en en la consola y ahora vamos a decir decirle Por ejemplo mi tupla abrimos corchete d2 no guardamos cambios control S control V para ejecutar y me dice que efectivamente el elemento que está en esa posición es el uno si le decimos en vez de posición dos posición 1 guardo cambios ejecuto pues me dice que es el 13 y así sucesivamente ya que hemos visto que es una tupla y que es una lista conviene saber que tenemos dos métodos que permiten convertir tuplas en listas y viceversa listas en en tuplas para convertir una tupla en una lista Contamos con el método list Cómo se utiliza este método Bueno pues podemos crear por ejemplo una lista a la cual podemos denominar o Llamar mi lista y decirle que esto es igual a list de la tupla que queremos convertir es decir mi lista es igual a list de mi tupla lo que hemos hecho es almacenar en esa variable pues una lista que la hemos convertido o que la hemos construido a partir de la tupla que ya teníamos No ahora si nosotros le decimos por ejemplo aquí print mi lista bien escrito a ser posible Pues si guardamos cambios control S Y ejecutamos con control B vemos como efectivamente lo que imprime es una lista y sabemos que es una lista por los corchetes No si en vez de decirle que imprima la lista imprima la tupla amos pues entonces lo que imprime es la tupla y lo sabemos por los paréntesis el método para realizar el proceso inverso es decir convertir una lista en tupla es el método tel o tuple como lo queráis decir no vamos a hacer una prueba rápida vamos a convertir rápidamente pues lo que antes era una tupla en una lista vamos a llamar por ejemplo mi lista vamos a decir que la lista pues es la que tenemos en pantalla evidentemente Tendremos que utilizar corchetes y Aquí vamos a decirle que mi tupla pues es igual a tle de mi lista es decir hemos hecho lo contrario de lo que acabamos de hacer hace un instante si nosotros le decimos que imprima la tupla guardo cambios y ejecuto pues vemos como nos la imprime con paréntesis no hemos convertido lo que era una lista en una tupla y lo hemos almacenado dentro de mi tupla y si le decimos que imprima mi lista guardamos ejecutamos pues imprime la lista como podéis ver Bueno pues list y tle métodos para convertir una cosa en otra hemos visto que las tuplas sí que permiten algo que va a ser muy útil en el futuro comprobar si hay elementos dentro de de esta tupla no Y eso lo conseguimos con la instrucción in de tal forma que con este mismo ejemplo si nosotros le decimos que mire a ver o que nos imprima a ver si Juan por ejemplo es decir esta cadena de caracteres se encuentra dentro de la tupla pues diríamos Juan in y ahora pues hay que escribir el nombre de la tupla recordar que lo primero que hemos hecho ha sido crear o declarar una lista y después la hemos convertido en tupla para almacenarla en la variable mi tupla luego entonces Juan in mit tupla esto lo que debe hacer es imprimir true si se encuentra y false si no se encuentra con lo cual si guardo y ejecuto pues evidentemente me dice que true porque sí que está No si le pregunto por cualquier cosa que no esté guardo ejecuto pues me dirá que false porque no está hay un método que permite una instrucción que permite realizar algo muy parecido que es el método count el método count nos permite averiguar Cuántos elementos que nosotros le preguntemos se encuentran dentro de una tupla Cómo utilizamos este método Pues de la siguiente forma imaginaos que le quiero preguntar Cuántas veces se encuentra el elemento 13 dentro de lo que sería la tupla Bueno pues haríamos lo siguiente print nombre de la tupla pues mi tupla punto count se abren los paréntesis del método count y dentro de los paréntesis del count el elemento por el que le quieres preguntar le estoy diciendo que me cuente dentro de esta tupla Cuántas veces encuentra ese elemento debe de imprimir un uno porque se encuentra una vez guardamos cambios ejecutamos y efectivamente así es No si nosotros a la lista original que luego hemos convertido en tupla le agregamos otro elemento 13 guardo cambios y ejecuto meir que dos y efectivamente Así es no en la lista original que luego hemos convertido en tupla pues ese elemento se encuentra dos veces otro método que puede ser muy útil y necesitaremos en un futuro sobre todo a la hora de utilizar bucles que ya entraremos en eso pues el método len el método len nos permite averiguar la longitud de una tupla de tal forma que si le decimos por ejemplo print mi tupla punto No en este caso sería el método len se utiliza de la siguiente forma print len abrimos los paréntesis del método y dentro la tupla de la que queremos averiguar la longitud guardamos cambios actualizamos y me dice que tiene cinco elementos ojo porque esto no te da el último índice te da Cuántos elementos hay y es cierto no un elemento 2 3 4 y cco el último elemento tendría índice cuatro pero son cinco los elementos es posible también crear lo que se denominan tuplas unitarias esto Qué es pues una tupla con un único elemento es muy importante que cuando quieras hacer esto pues la tupla sea de la siguiente forma el elemento que queremos almacenar dentro de la tupla y una coma a continuación si no ponemos esta coma no estamos hablando de una tupla unitaria una tupla con un único elemento Entonces esto sería una tupla unitaria y podemos hacer lo siguiente podemos imprimir la longitud de esta tupla para ver que efectivamente tiene un único elemento si guardo y ejecuto pues efectivamente Así es no Bueno pues esto como digo se llama tupla unitaria Bueno si recordáis he dicho hace un instante que a la hora de declarar o de crear una tupla los paréntesis son opcionales y eso es cierto porque también podemos crear una tupla de la siguiente forma vamos a eliminar estos elementos puedo crear una tupla prescindiendo totalmente de los paréntesis esto que acabo de escribir en pantalla también es una tupla De hecho si decimos que imprima esta tupla guardo ejecuto vemos como eh se considera como una tupla porque le pone los paréntesis correspondientes lo único que ocurre es que esta notación que es posible y la podéis utilizar si queréis a veces eh nos puede llevar a confusión cuando utilicemos funciones con parámetros y que reciben parámetros no Y esto es algo que veremos más adelante luego entonces yo recomiendo siempre poner los paréntesis lo que acabamos de hacer de escribir una tupla sin paréntesis se conoce como empaquetado de tupla En definitiva se trata de una tupla pero bueno se denomina de esta forma no se dice que estamos empaquetando una tupla y también tenemos el proceso inverso que es muy interesante tenemos el proceso de desempaquetado de tupla y eso En qué consiste pues mirar es algo muy interesante porque permite asignar todos los elementos que forman parte de una tupla a diferentes variables de una manera sencilla vamos a declarar una tupla como lo haríamos normalmente que es con sus paréntesis no y antes de imprimir esa tupla lo que voy a hacer va a ser crear una serie de variables separadas por comas no Entonces por ejemplo creo una variable a la cual llamo nombre a continuación creo una variable a la cual llamo día otra mes y otra año utilizo gn porque no es recomendable en programación utilizar caracteres latinos como la eñ no como podéis observar mi objetivo final es eh almacenar dentro de cada una de estas variables el valor correspondiente que tenemos dentro de una tupla no entonces pretendo almacenar Juan dentro de nombre 13 dentro de día uno dentro de mes y 1995 dentro de año y eso como digo es muy fácil en python utilizando lo que se llama desempaquetado de tuplas que no es Ni más ni menos que decirle lo siguiente estas variables separadas por comas es igual a la tupla que hemos creado ya está con esto automáticamente lo que hace python es asignar cada uno de los valores de la tupla por orden a las variables declaradas si hacéis una prueba y le decís que imprima la variable nombre luego le decimos que imprima la variable día vamos a decirle también que imprima por cambiar el orden para que veáis que lo tiene perfectamente asignado el año y por último el mes por poner un ejemplo guardamos actualizamos o ejecutamos Y si os dais cuenta dentro de nombre me almacena Juan dentro de día almacena el 13 dentro de año almacena 1995 porque es la última variable que hemos creado Ahí está y la última en imprimir es mes que imprime uno bueno pues esto es lo que se conoce como desempaquetado de tuplas Y por último para terminar el vídeo recordar que no podemos utilizar nada que intente modificar una tupla como hacíamos con las listas si nosotros le decimos mit tupla appen como hacíamos con las listas con el método appen y ahora pretendo aquí Agregar un nuevo elemento si guardas y ejecutas te va a dar un error te va a lanzar una excepción y Bueno pues todo esto respecto a las tuplas yo creo que tenemos las herramientas necesarias para poder trabajar ya con tuplas con listas y en el futuro en el próximo vídeo pues veremos los diccionarios Así que os digo lo de siempre os invito a que permanezca atentos a la próxima entrega hasta entonces que os vaya bien