Python Tuple (con ejemplos)

En este artículo, aprenderá todo sobre las tuplas de Python. Más específicamente, qué son las tuplas, cómo crearlas, cuándo usarlas y varios métodos con los que debe estar familiarizado.

Vídeo: listas y tuplas de Python

Una tupla en Python es similar a una lista. La diferencia entre los dos es que no podemos cambiar los elementos de una tupla una vez asignada, mientras que podemos cambiar los elementos de una lista.

Creando una tupla

Una tupla se crea colocando todos los elementos (elementos) entre paréntesis (), separados por comas. Los paréntesis son opcionales, sin embargo, es una buena práctica usarlos.

Una tupla puede tener cualquier número de elementos y pueden ser de diferentes tipos (entero, flotante, lista, cadena, etc.).

 # Different types of tuples # Empty tuple my_tuple = () print(my_tuple) # Tuple having integers my_tuple = (1, 2, 3) print(my_tuple) # tuple with mixed datatypes my_tuple = (1, "Hello", 3.4) print(my_tuple) # nested tuple my_tuple = ("mouse", (8, 4, 6), (1, 2, 3)) print(my_tuple)

Salida

 () (1, 2, 3) (1, 'Hola', 3.4) ('mouse', (8, 4, 6), (1, 2, 3))

También se puede crear una tupla sin usar paréntesis. Esto se conoce como empaque de tuplas.

 my_tuple = 3, 4.6, "dog" print(my_tuple) # tuple unpacking is also possible a, b, c = my_tuple print(a) # 3 print(b) # 4.6 print(c) # dog

Salida

 (3, 4.6, 'perro') 3 4.6 perro

Crear una tupla con un elemento es un poco complicado.

Tener un elemento entre paréntesis no es suficiente. Necesitaremos una coma al final para indicar que, de hecho, es una tupla.

 my_tuple = ("hello") print(type(my_tuple)) # # Creating a tuple having one element my_tuple = ("hello",) print(type(my_tuple)) # # Parentheses is optional my_tuple = "hello", print(type(my_tuple)) # 

Salida

 

Acceder a elementos de tupla

Hay varias formas en las que podemos acceder a los elementos de una tupla.

1. Indexación

Podemos usar el operador de índice ()para acceder a un elemento en una tupla, donde el índice comienza desde 0.

Entonces, una tupla que tenga 6 elementos tendrá índices de 0 a 5. Si intenta acceder a un índice fuera del rango de índice de tupla (6,7, … en este ejemplo) generará un IndexError.

El índice debe ser un número entero, por lo que no podemos usar float u otros tipos. Esto resultará en TypeError.

Del mismo modo, se accede a las tuplas anidadas mediante la indexación anidada, como se muestra en el siguiente ejemplo.

 # Accessing tuple elements using indexing my_tuple = ('p','e','r','m','i','t') print(my_tuple(0)) # 'p' print(my_tuple(5)) # 't' # IndexError: list index out of range # print(my_tuple(6)) # Index must be an integer # TypeError: list indices must be integers, not float # my_tuple(2.0) # nested tuple n_tuple = ("mouse", (8, 4, 6), (1, 2, 3)) # nested index print(n_tuple(0)(3)) # 's' print(n_tuple(1)(1)) # 4

Salida

 puntos 4

2. Indexación negativa

Python permite la indexación negativa de sus secuencias.

El índice de -1 se refiere al último elemento, -2 al penúltimo elemento y así sucesivamente.

 # Negative indexing for accessing tuple elements my_tuple = ('p', 'e', 'r', 'm', 'i', 't') # Output: 't' print(my_tuple(-1)) # Output: 'p' print(my_tuple(-6))

Salida

 tp

3. Cortar

Podemos acceder a un rango de elementos en una tupla usando el operador de corte dos puntos :.

 # Accessing tuple elements using slicing my_tuple = ('p','r','o','g','r','a','m','i','z') # elements 2nd to 4th # Output: ('r', 'o', 'g') print(my_tuple(1:4)) # elements beginning to 2nd # Output: ('p', 'r') print(my_tuple(:-7)) # elements 8th to end # Output: ('i', 'z') print(my_tuple(7:)) # elements beginning to end # Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') print(my_tuple(:))

Salida

 ('r', 'o', 'g') ('p', 'r') ('i', 'z') ('p', 'r', 'o', 'g', 'r ',' a ',' m ',' i ',' z ')

El corte se puede visualizar mejor si se considera que el índice se encuentra entre los elementos, como se muestra a continuación. Entonces, si queremos acceder a un rango, necesitamos el índice que cortará la parte de la tupla.

Corte de elementos en Python

Cambiar una tupla

A diferencia de las listas, las tuplas son inmutables.

Esto significa que los elementos de una tupla no se pueden cambiar una vez asignados. Pero, si el elemento es en sí mismo un tipo de datos mutable como una lista, sus elementos anidados se pueden cambiar.

También podemos asignar una tupla a diferentes valores (reasignación).

 # Changing tuple values my_tuple = (4, 2, 3, (6, 5)) # TypeError: 'tuple' object does not support item assignment # my_tuple(1) = 9 # However, item of mutable element can be changed my_tuple(3)(0) = 9 # Output: (4, 2, 3, (9, 5)) print(my_tuple) # Tuples can be reassigned my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') # Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') print(my_tuple)

Salida

 (4, 2, 3, (9, 5)) ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')

We can use + operator to combine two tuples. This is called concatenation.

We can also repeat the elements in a tuple for a given number of times using the * operator.

Both + and * operations result in a new tuple.

 # Concatenation # Output: (1, 2, 3, 4, 5, 6) print((1, 2, 3) + (4, 5, 6)) # Repeat # Output: ('Repeat', 'Repeat', 'Repeat') print(("Repeat",) * 3)

Output

 (1, 2, 3, 4, 5, 6) ('Repeat', 'Repeat', 'Repeat')

Deleting a Tuple

As discussed above, we cannot change the elements in a tuple. It means that we cannot delete or remove items from a tuple.

Deleting a tuple entirely, however, is possible using the keyword del.

 # Deleting tuples my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') # can't delete items # TypeError: 'tuple' object doesn't support item deletion # del my_tuple(3) # Can delete an entire tuple del my_tuple # NameError: name 'my_tuple' is not defined print(my_tuple)

Output

 Traceback (most recent call last): File "", line 12, in NameError: name 'my_tuple' is not defined

Tuple Methods

Methods that add items or remove items are not available with tuple. Only the following two methods are available.

Some examples of Python tuple methods:

 my_tuple = ('a', 'p', 'p', 'l', 'e',) print(my_tuple.count('p')) # Output: 2 print(my_tuple.index('l')) # Output: 3

Output

 2 3

Other Tuple Operations

1. Tuple Membership Test

We can test if an item exists in a tuple or not, using the keyword in.

 # Membership test in tuple my_tuple = ('a', 'p', 'p', 'l', 'e',) # In operation print('a' in my_tuple) print('b' in my_tuple) # Not in operation print('g' not in my_tuple)

Output

 True False True

2. Iterating Through a Tuple

We can use a for loop to iterate through each item in a tuple.

 # Using a for loop to iterate through a tuple for name in ('John', 'Kate'): print("Hello", name)

Output

 Hello John Hello Kate

Advantages of Tuple over List

Since tuples are quite similar to lists, both of them are used in similar situations. However, there are certain advantages of implementing a tuple over a list. Below listed are some of the main advantages:

  • Generalmente usamos tuplas para tipos de datos heterogéneos (diferentes) y listas para tipos de datos homogéneos (similares).
  • Dado que las tuplas son inmutables, iterar a través de una tupla es más rápido que con list. Entonces hay un ligero aumento de rendimiento.
  • Las tuplas que contienen elementos inmutables se pueden utilizar como clave para un diccionario. Con listas, esto no es posible.
  • Si tiene datos que no cambian, implementarlos como tupla garantizará que permanezcan protegidos contra escritura.

Articulos interesantes...