14- 馃З Gu铆a r谩pida sobre tuplas en Python




Lecci贸n: 14 - Tuplas en Python

Tupla

馃П Tupla: Colecciones Inmutables y Ordenadas

Una tupla en Python es una colecci贸n de elementos que est谩 ordenada y es inmutable (no se puede cambiar, agregar ni eliminar elementos una vez creada). Las tuplas se escriben con par茅ntesis `()`.

Caracter铆sticas Principales de las Tuplas:

  • Ordenadas: Los elementos en una tupla tienen un orden espec铆fico, y ese orden no cambiar谩.
  • Inmutables: Una vez que se crea una tupla, no se pueden modificar sus elementos (no se pueden agregar, eliminar ni cambiar elementos).
  • Permiten duplicados: Las tuplas pueden contener elementos con el mismo valor.
  • Indexadas: Se puede acceder a los elementos de una tupla utilizando 铆ndices, comenzando desde 0.

Creaci贸n de Tuplas:

Para crear una tupla, coloca los elementos entre par茅ntesis, separados por comas.

# Tupla con diferentes tipos de datos
    mi_tupla = ("manzana", 3.14, True)
    print(mi_tupla) # Output: ('manzana', 3.14, True)

    # Tupla con elementos duplicados
    tupla_duplicados = (1, 5, 2, 5, 3)
    print(tupla_duplicados) # Output: (1, 5, 2, 5, 3)

    # Tupla vac铆a
    tupla_vacia = ()
    print(tupla_vacia) # Output: ()

    # Tupla con un solo elemento (¡ojo con la coma!)
    tupla_un_elemento = ("pera",)
    print(type(tupla_un_elemento)) # Output: <class 'tuple'>

    # ¡Sin la coma, Python lo interpreta como una cadena!
    no_es_tupla = ("uva")
    print(type(no_es_tupla)) # Output: <class 'str'>
    

¿Por qu茅 usar Tuplas?

  • Integridad de los datos: La inmutabilidad garantiza que los datos permanezcan protegidos contra modificaciones accidentales.
  • Rendimiento: Las tuplas suelen ser ligeramente m谩s r谩pidas de iterar que las listas.
  • Uso como claves en diccionarios: Las tuplas pueden usarse como claves en diccionarios (a diferencia de las listas, que son mutables).
  • Representaci贸n de datos fijos: Son 煤tiles para representar colecciones de elementos que no deben cambiar, como coordenadas, registros, etc.

Las tuplas son una estructura de datos fundamental en Python, especialmente 煤til cuando la inmutabilidad es una propiedad deseada.

Tupla de acceso

馃棟️ Acceder a Elementos de una Tupla

Al igual que con las listas, se puede acceder a los elementos de una tupla haciendo referencia a su 铆ndice. Los 铆ndices en Python comienzan desde 0.

Acceso por 脥ndice Positivo:

Para acceder a un elemento espec铆fico, utiliza el 铆ndice entre corchetes `[]` despu茅s del nombre de la tupla.

frutas_tupla = ("manzana", "pl谩tano", "cereza")

    primer_elemento = frutas_tupla[0]
    print(f"El primer elemento es: {primer_elemento}") # Output: manzana

    segundo_elemento = frutas_tupla[1]
    print(f"El segundo elemento es: {segundo_elemento}") # Output: pl谩tano

    tercer_elemento = frutas_tupla[2]
    print(f"El tercer elemento es: {tercer_elemento}") # Output: cereza
    

Indexaci贸n Negativa:

Tambi茅n puedes utilizar la indexaci贸n negativa para acceder a los elementos desde el final de la tupla. El 铆ndice `-1` se refiere al 煤ltimo elemento, `-2` al pen煤ltimo, y as铆 sucesivamente.

colores_tupla = ("rojo", "verde", "azul", "amarillo")

    ultimo_color = colores_tupla[-1]
    print(f"El 煤ltimo color es: {ultimo_color}") # Output: amarillo

    penultimo_color = colores_tupla[-2]
    print(f"El pen煤ltimo color es: {penultimo_color}") # Output: azul
    

Rango de 脥ndices (Slicing):

Puedes especificar un rango de 铆ndices para acceder a una sub-tupla. Recuerda que el 铆ndice de inicio es inclusivo y el 铆ndice de fin es exclusivo.

numeros_tupla = (10, 20, 30, 40, 50, 60)

    sub_tupla1 = numeros_tupla[2:5]
    print(f"Sub-tupla del 铆ndice 2 al 4: {sub_tupla1}") # Output: (30, 40, 50)

    sub_tupla2 = numeros_tupla[:4]
    print(f"Sub-tupla hasta el 铆ndice 3: {sub_tupla2}") # Output: (10, 20, 30, 40)

    sub_tupla3 = numeros_tupla[3:]
    print(f"Sub-tupla desde el 铆ndice 3: {sub_tupla3}") # Output: (40, 50, 60)

    sub_tupla_negativo = numeros_tupla[-4:-1]
    print(f"Sub-tupla con 铆ndices negativos: {sub_tupla_negativo}") # Output: (30, 40, 50)
    

Consideraciones:

  • Intentar acceder a un 铆ndice fuera del rango de la tupla resultar谩 en un `IndexError`.
  • La inmutabilidad de las tuplas significa que no puedes modificar los elementos accedidos; solo puedes leerlos.

Acceder a los elementos de una tupla utilizando 铆ndices es fundamental para trabajar con esta estructura de datos en Python.

Actualizar tupla

馃攧 Actualizar Tuplas: Superando la Inmutabilidad

Las tuplas son inmutables, lo que significa que una vez creadas, sus elementos no pueden ser modificados directamente (no se pueden cambiar, agregar ni eliminar elementos).

El "Truco" para Actualizar Tuplas: Convertir a Lista

Sin embargo, existe una forma indirecta de "actualizar" una tupla: puedes convertirla a una lista, realizar las modificaciones deseadas en la lista y luego volver a convertir la lista a una tupla.

Pasos para "Actualizar" una Tupla:

  1. Convertir la tupla a una lista: Utiliza la funci贸n `list()` para crear una versi贸n mutable de la tupla.
  2. Modificar la lista: Realiza las operaciones de modificaci贸n que necesites (cambiar elementos, agregar, eliminar).
  3. Convertir la lista de nuevo a una tupla: Utiliza la funci贸n `tuple()` para crear una nueva tupla con los cambios realizados.

Ejemplos de "Actualizaci贸n" de Tuplas:

mi_tupla = ("manzana", "banana", "cereza")
    print(f"Tupla original: {mi_tupla}") # Output: ('manzana', 'banana', 'cereza')

    # Convertir a lista
    mi_lista = list(mi_tupla)
    print(f"Lista convertida: {mi_lista}") # Output: ['manzana', 'banana', 'cereza']

    # Modificar la lista (cambiar un elemento)
    mi_lista[1] = "kiwi"
    print(f"Lista modificada: {mi_lista}") # Output: ['manzana', 'kiwi', 'cereza']

    # Convertir de nuevo a tupla
    mi_tupla = tuple(mi_lista)
    print(f"Tupla 'actualizada': {mi_tupla}") # Output: ('manzana', 'kiwi', 'cereza')

    # Ejemplo de agregar un elemento (se crea una nueva tupla)
    otra_tupla = ("perro", "gato")
    otra_lista = list(otra_tupla)
    otra_lista.append("p谩jaro")
    nueva_tupla = tuple(otra_lista)
    print(f"Nueva tupla con elemento agregado: {nueva_tupla}") # Output: ('perro', 'gato', 'p谩jaro')
    

Consideraciones:

  • Este proceso de "actualizaci贸n" no modifica la tupla original; en realidad, se crea una nueva tupla con los cambios.
  • Si la inmutabilidad es un requisito estricto, es importante ser consciente de que esta es una forma de sortear esa restricci贸n.

Aunque las tuplas no se pueden modificar directamente, la conversi贸n a lista proporciona una manera de realizar cambios y luego volver a tener una tupla con los elementos actualizados.

Desempaquetar tupla

馃摝 Desempaquetar Tuplas: Asignaci贸n Directa de Elementos

En Python, puedes extraer los valores de una tupla y asignarlos a variables individuales. Esto se conoce como desempaquetado de tuplas. Es una forma concisa y legible de trabajar con los elementos de una tupla cuando conoces su estructura (el n煤mero y el orden de los elementos).

Desempaquetado B谩sico:

Para desempaquetar una tupla, simplemente asigna la tupla a un n煤mero igual de variables, separadas por comas. Python autom谩ticamente asignar谩 cada elemento de la tupla a la variable correspondiente seg煤n su posici贸n.

coordenadas = (10, 20)
    x, y = coordenadas
    print(f"El valor de x es: {x}") # Output: 10
    print(f"El valor de y es: {y}") # Output: 20

    persona = ("Ana", 30, "Madrid")
    nombre, edad, ciudad = persona
    print(f"Nombre: {nombre}, Edad: {edad}, Ciudad: {ciudad}") # Output: Nombre: Ana, Edad: 30, Ciudad: Madrid
    

N煤mero Incorrecto de Variables:

Es importante que el n煤mero de variables en el lado izquierdo de la asignaci贸n coincida exactamente con el n煤mero de elementos en la tupla. Si no coinciden, Python generar谩 un error `ValueError`.

# Esto causar谩 un ValueError: demasiadas variables para desempaquetar
    # punto = (5, 5)
    # a, b, c = punto

    # Esto tambi茅n causar谩 un ValueError: no suficientes variables para desempaquetar
    # info = ("Carlos", 25)
    # nombre_completo = info
    

Usando el Asterisco `*` para Elementos Restantes:

Si tienes una tupla con m谩s elementos de los que quieres asignar a variables individuales, puedes usar un asterisco `*` delante del nombre de una variable para recoger el resto de los elementos en una lista.

numeros = (1, 2, 3, 4, 5)
    primero, segundo, *resto = numeros
    print(f"Primero: {primero}") # Output: 1
    print(f"Segundo: {segundo}") # Output: 2
    print(f"Resto: {resto}") # Output: [3, 4, 5]

    colores = ("rojo", "verde", "azul", "amarillo", "morado")
    principal, *intermedios, ultimo = colores
    print(f"Principal: {principal}") # Output: rojo
    print(f"Intermedios: {intermedios}") # Output: ['verde', 'azul', 'amarillo']
    print(f"脷ltimo: {ultimo}") # Output: morado
    

Aplicaciones del Desempaquetado:

  • Asignaci贸n clara y concisa de valores.
  • Iteraci贸n sobre secuencias de pares (por ejemplo, al usar `enumerate()` o `zip()`).
  • Devoluci贸n de m煤ltiples valores desde una funci贸n.

El desempaquetado de tuplas es una caracter铆stica poderosa de Python que puede hacer que tu c贸digo sea m谩s legible y eficiente al trabajar con colecciones de elementos.

Bucles con tupla o tupla bucles

馃攧 Bucles en Tuplas: Iterando a Trav茅s de los Elementos

Puedes recorrer los elementos de una tupla utilizando un bucle `for` de manera similar a como lo har铆as con una lista.

Bucle `for` Simple:

La forma m谩s com煤n de iterar sobre una tupla es utilizando un bucle `for` que recorre cada elemento de la tupla.

frutas_tuple_bucle = ("manzana", "pl谩tano", "cereza")

    for fruta in frutas_tuple_bucle:
        print(fruta)
    # Output:
    # manzana
    # pl谩tano
    # cereza
    

Bucle `for` con 脥ndices:

Si tambi茅n necesitas acceder al 铆ndice de cada elemento durante la iteraci贸n, puedes utilizar las funciones `range()` y `len()` o la funci贸n `enumerate()`.

colores_tuple_bucle = ("rojo", "verde", "azul")

    # Usando range() y len()
    for i in range(len(colores_tuple_bucle)):
        print(f"脥ndice {i}: {colores_tuple_bucle[i]}")
    # Output:
    # 脥ndice 0: rojo
    # 脥ndice 1: verde
    # 脥ndice 2: azul

    # Usando enumerate()
    for indice, color in enumerate(colores_tuple_bucle):
        print(f"脥ndice {indice}: {color}")
    # Output:
    # 脥ndice 0: rojo
    # 脥ndice 1: verde
    # 脥ndice 2: azul
    

Bucle `while`:

Aunque menos com煤n para iterar sobre colecciones, tambi茅n puedes usar un bucle `while` para recorrer una tupla utilizando 铆ndices.

numeros_tuple_bucle = (10, 20, 30)
    i = 0
    while i < len(numeros_tuple_bucle):
        print(numeros_tuple_bucle[i])
        i += 1
    # Output:
    # 10
    # 20
    # 30
    

Consideraciones:

  • La inmutabilidad de la tupla significa que no puedes modificar los elementos dentro del bucle.
  • La elecci贸n del tipo de bucle depende de si solo necesitas los elementos o tambi茅n sus 铆ndices. `for` simple y `enumerate()` suelen ser las opciones m谩s legibles para la mayor铆a de los casos.

Iterar a trav茅s de los elementos de una tupla es una operaci贸n fundamental para procesar los datos que contiene.

M茅todos de tuplas

⚙️ M茅todos de Tuplas en Python

Las tuplas en Python tienen pocos m茅todos en comparaci贸n con las listas, debido a su naturaleza inmutable. Los dos m茅todos principales disponibles para las tuplas son:

  • `count()`: Devuelve el n煤mero de veces que un valor especificado aparece en la tupla.
  • `index()`: Devuelve el 铆ndice de la primera aparici贸n de un valor especificado en la tupla.

El M茅todo `count()`:

Este m茅todo toma un valor como argumento y devuelve la frecuencia de ese valor dentro de la tupla.

mi_tupla_count = (1, 3, 7, 8, 7, 5, 4, 6, 8, 5, 7)
    conteo_sietes = mi_tupla_count.count(7)
    print(f"El n煤mero 7 aparece {conteo_sietes} veces.") # Output: El n煤mero 7 aparece 3 veces.

    conteo_cincos = mi_tupla_count.count(5)
    print(f"El n煤mero 5 aparece {conteo_cincos} veces.") # Output: El n煤mero 5 aparece 2 veces.

    conteo_nueves = mi_tupla_count.count(9)
    print(f"El n煤mero 9 aparece {conteo_nueves} veces.") # Output: El n煤mero 9 aparece 0 veces.
    

El M茅todo `index()`:

Este m茅todo toma un valor como argumento y devuelve el 铆ndice de la primera ocurrencia de ese valor en la tupla. Si el valor no se encuentra en la tupla, se genera un error `ValueError`.

mi_tupla_index = ("manzana", "banana", "cereza", "d谩til", "banana")
    indice_banana = mi_tupla_index.index("banana")
    print(f"La primera aparici贸n de 'banana' est谩 en el 铆ndice: {indice_banana}") # Output: La primera aparici贸n de 'banana' est谩 en el 铆ndice: 1

    indice_cereza = mi_tupla_index.index("cereza")
    print(f"La primera aparici贸n de 'cereza' est谩 en el 铆ndice: {indice_cereza}") # Output: La primera aparici贸n de 'cereza' est谩 en el 铆ndice: 2

    # Intentar encontrar un valor que no existe causar谩 un ValueError
    # indice_uva = mi_tupla_index.index("uva")
    # print(indice_uva)
    

Limitaciones debido a la Inmutabilidad:

Debido a que las tuplas son inmutables, no existen m茅todos que permitan modificar la tupla despu茅s de su creaci贸n (como `append()`, `insert()`, `remove()`, `pop()`, `sort()`, etc., que s铆 est谩n disponibles para las listas).

Aunque las tuplas tienen pocos m茅todos, `count()` e `index()` son 煤tiles para obtener informaci贸n sobre los elementos que contienen.

M茅todos de tuplas

⚙️ M茅todos de Tuplas en Python

Las tuplas en Python tienen pocos m茅todos en comparaci贸n con las listas, debido a su naturaleza inmutable. Los dos m茅todos principales disponibles para las tuplas son:

  • `count()`: Devuelve el n煤mero de veces que un valor especificado aparece en la tupla.
  • `index()`: Devuelve el 铆ndice de la primera aparici贸n de un valor especificado en la tupla.

El M茅todo `count()`:

Este m茅todo toma un valor como argumento y devuelve la frecuencia de ese valor dentro de la tupla.

mi_tupla_count = (1, 3, 7, 8, 7, 5, 4, 6, 8, 5, 7)
    conteo_sietes = mi_tupla_count.count(7)
    print(f"El n煤mero 7 aparece {conteo_sietes} veces.") # Output: 3

    conteo_cincos = mi_tupla_count.count(5)
    print(f"El n煤mero 5 aparece {conteo_cincos} veces.") # Output: 2

    conteo_nueves = mi_tupla_count.count(9)
    print(f"El n煤mero 9 aparece {conteo_nueves} veces.") # Output: 0
    

El M茅todo `index()`:

Este m茅todo toma un valor como argumento y devuelve el 铆ndice de la primera ocurrencia de ese valor en la tupla. Si el valor no se encuentra en la tupla, se genera un error `ValueError`.

mi_tupla_index = ("manzana", "banana", "cereza", "d谩til", "banana")
    indice_banana = mi_tupla_index.index("banana")
    print(f"La primera aparici贸n de 'banana' est谩 en el 铆ndice: {indice_banana}") # Output: 1

    indice_cereza = mi_tupla_index.index("cereza")
    print(f"La primera aparici贸n de 'cereza' est谩 en el 铆ndice: {indice_cereza}") # Output: 2

    # Intentar encontrar un valor que no existe causar谩 un ValueError
    # indice_uva = mi_tupla_index.index("uva")
    # print(indice_uva)
    

Limitaciones debido a la Inmutabilidad:

Debido a que las tuplas son inmutables, no existen m茅todos que permitan modificar la tupla despu茅s de su creaci贸n (como `append()`, `insert()`, `remove()`, `pop()`, `sort()`, etc., que s铆 est谩n disponibles para las listas).

Aunque las tuplas tienen pocos m茅todos, `count()` e `index()` son 煤tiles para obtener informaci贸n sobre los elementos que contienen.




Publicar un comentario

0 Comentarios