Ir al contenido principal

Python: Tuplas...

Seguimos nuestro camino a través de Python, deteniéndonos en esta ocasión en otro tipo dentro de las  colecciones de datos: las tuplas.

Estas colecciones se diferencian de las listas que vimos anteriormente en la forma en que las declararemos y en que son inmutables, es decir que tienen un tamaño fijo y una vez creadas no pueden modificarse.

Creando una tupla:


La declaración de las tuplas se asemeja a la de las listas, sólo que en lugar de corchetes usaremos paréntesis:



Veamos un ejemplo desde el intérprete:


Usar los paréntesis es una buena costumbre para crear una tupla, pero en realidad no son necesarios y el constructor de la misma es la coma ( , ) , por lo que también podríamos declararla de esta manera:




NOTA: Colocar la coma al final también es una costumbre que deberíamos tener en cuenta ya que si tuviéramos una tupla de un solo elemento el intérprete necesita esa coma para distinguirlo de una variable o de un elemento entre paréntesis (dependiendo cual de las formas de declararla usamos).

Como podemos ver claramente en el siguiente ejemplo:


  

Accediendo a los elementos de una tupla:


Al igual que en las listas, para acceder a los elementos de una tupla utilizaremos el índice correspondiente entre corchetes como se ve en el ejemplo:




Usando índices negativos:


En las tuplas también podemos hacer uso de esta opción que nos ofrece Python, usando índices negativos para acceder a los elementos desde atrás hacia adelante:


Seleccionando porciones de una tupla:


El slicing también está presente en las tuplas y se realiza de la misma forma que vimos para listas:


En el ejemplo creamos otra tupla a la que asignamos un slicing (particionado) de la primera. Por lo que la segunda contiene ahora los elementos desde el índice 1 al 2 de la primera tupla.

El print del final no deja dudas de ello, ya que el elemento 0 de la nueva tupla ahora es el elemento de índice 1 de la primera.




Como ven, muchas de las cosas que vimos para listas también son aplicables para tuplas, excepto todas las propiedades que teníamos para modificarlas ya que las tuplas no admiten modificaciones.

En conclusión, las tuplas tienen limitaciones respecto de las listas, pero son más livianas en lo relacionado a la memoria utilizada. Por lo que si no pensamos modificar los elementos de nuestra colección y sólo queremos acceder a ellos en algún momento, son una buena alternativa.


Comentarios

Entradas populares de este blog

C: Conversiones de tipo (casting) en C...

El casting o simplemente cast  nos permite hacer una conversión explícita de un tipo de dato a otro, a criterio del programador siempre y cuando estos tipos sean compatibles. Este cast se realiza a través de un operador de conversión de tipos (type casting operator) y es un recurso a tener en cuenta ya que hay situaciones en que nos puede resultar de gran utilidad. Hacer uso de un cast es tan sencillo como poner (tipo de dato)  delante de la expresión o variable a convertir. Veamos un ejemplo: Declaramos una variable de tipo int con un identificador tan creativo como "a" y le realizamos diferentes cast a a para mostrarlo como si fuera un float, un double y un char en un printf. Lo que obtendríamos en pantalla sería lo siguiente: Donde tenemos el valor de nuestro a, a convertido en float y double (mostrándolo con 3 cifras decimales) y a convertido en char. Si vemos este último caso, al hacer la conversión de "a" a char toma a como el código ascii de...

C: Ejemplos: Congruencia de Zeller (nivel básico) ...

La Congruencia de Zeller es un algoritmo que se atribuye al matemático alemán Julius Christian Johannes Zeller que vivió en el siglo XIX. Este algoritmo nos permite determinar el día de la semana que le corresponde a una fecha determinada del calendario Gregoriano. La fórmula que nosotros usaremos (con algunas modificaciones respecto de la original para poder usarla en  informática) es la siguiente: Donde h es el día de la semana (entre 0 y 6), J es año/100 (la centuria) y K es año mod 100 (el año de la centuria). Y hay que tener en cuenta que los meses de enero y febrero cuentan como el mes 13 y 14 del año anterior. Ahora que tenemos la fórmula, programemos el algoritmo en C mediante el uso de una función: Analicemos el código paso a paso: Tenemos en cuenta el caso de enero y febrero: Dijimos que estos meses corresponden a los meses 13 y 14 del año anterior por lo que los asignamos como corresponde (mes + 12 , que dará 13 para enero y 14 para febrero) y le ...

Seguimos con lógica proposicional...

Anteriormente,  comenzamos  a explicar conceptos básicos del tema y analizar conectores lógicos a través de sus tablas de verdad. Entre esos conectores encontramos el condicional o implicación que denotamos de la forma:     p->q , donde p y q son proposiciones. Recordamos también que en  p->q  ,  p  recibe el nombre de "antecedente" y  q  de "consecuente". También se llama a  p  "hipótesis" y a  q  "tesis". Definida esta última, encontramos dos conceptos relacionados a ella: la recíproca y la contrarrecíproca. La  recíproca  de una implicación  p->q  se define como  q->p. Si comparamos la tabla de verdad de una implicación con su recíproca podemos ver que no es lo mismo decir  p->q  que decir  q->p  ya que no son expresiones  equivalentes , concepto que veremos más adelante. Mientras que la contrarrecíproca de una implicación  p->q  se d...