Tuplas#

Introducción#

Una tupla (tuple) es una colección de objetos que están ordenados y son inmutables (no pueden modificarse). Las tuplas admiten elementos repetidos y sus miembros son indexados.

Tuplas#

Las tuplas se crean y se reconocen porque los elementos se escriben entre paréntesis circulares: ‘()’. Por ejemplo tupla1 en la siguiente línea define una tupla.

tupla1 = (1,3,5,7)

Cada elemento de la tupla está indexado. Por ejemplo, discuta el siguiente snippet de código.

print ('Acceso a la tupla con iterator')
for i in tupla1:
    print(i)

print('Acceso al tupla con índices')
for i in range(len(tupla1)):
    print(i, tupla1[i] )
Acceso a la tupla con iterator
1
3
5
7
Acceso al tupla con índices
0 1
1 3
2 5
3 7

Constructor de tuplas: tuple(iterable)#

Una tupla puede crearse a partir de cualquier objeto iterable. Por ejemplo:

lista1 = [1,2,3]
tupla2 = tuple(lista1)
print(tupla2)
(1, 2, 3)

Observe como los valores de la lista pueden modificarse pero no los de la tupla

lista1[0] = 5
print(lista1)
[5, 2, 3]
try: 
    tupla2[0] = 5
    print(tupla2)
except: 
    print("problema encontrado")
problema encontrado

Uso de índices con tuplas#

Observe las siguientes salidas

print('tupla1:\t',tupla1)
print('tupla1[:3]:\t', tupla1[:3])
print('tupla1[1:]:\t', tupla1[1:])
print('tupla1[0:1]:\t', tupla1[0:1])
print('tupla1[1:-1]:\t', tupla1[1:-1])
print('tupla1[:-1]:\t', tupla1[:-1])
print('tupla1[:]:\t', tupla1[:])
print('tupla1[::2]:\t', tupla1[::2])
tupla1:	 (1, 3, 5, 7)
tupla1[:3]:	 (1, 3, 5)
tupla1[1:]:	 (3, 5, 7)
tupla1[0:1]:	 (1,)
tupla1[1:-1]:	 (3, 5)
tupla1[:-1]:	 (1, 3, 5)
tupla1[:]:	 (1, 3, 5, 7)
tupla1[::2]:	 (1, 5)

De especial atención son las tres últimas líneas. El valor -1 se usa para indicar el final del objeto.

La ausencia de valores indica se toma desde el extremo (izquierdo o derecho) del objeto indexable.

El tercer índice, introducido en Python, se utiliza como valor de salto al recuperar los elementos de la tupla. La última línea del ejemplo indica tomar cada dos posiciones. Como inicia en cero (0) tomas la posiciones 0 y 2.

Las tuplas pueden contener diferentes tipos#

Por ejemplo en el siguiente fragmento tup2 es una tupla que contiene un entero, un string, un tupla y un float.

tupla1 = (1,3,5,7)
tup2 = (1,"John", tupla1, True, -23.1)

for i in tup2:
    print(i)
1
John
(1, 3, 5, 7)
True
-23.1

Alternativamente podemos recorrer las lista haciendo uso de índices como sigue.

tupla1 = (1,3,5,7)
tup2 = (1,"John", tupla1, True, -23.1)

N = len(tup2)
for i in range(N):
    print(tup2[i])
1
John
(1, 3, 5, 7)
True
-23.1