Está en la página 1de 9

308

7.5 Tuplas

Una tupla es una colección de datos que pueden tener diferente tipo. Los datos se
escriben entre paréntesis, separados por comas con la siguiente sintaxis. Opcionalmente
se pueden omitir los paréntesis:

(dato, dato, dato, ..., dato)

Los componentes de una tupla no se pueden modificar después de haber sido creados.

Las celdas son numeradas desde cero. El primer componente, o primera celda, tiene
índice 0. El segundo componente, o segunda celda, tiene índice 1, etc.

Se puede acceder a los componentes de una tupla mediante un índice entre corchetes

Se puede acceder a varios elementos o componentes mediante un rango para el índice


usando “slicing”

El rango no incluye el extremo derecho especificado

Ejemplo. Descipción de una tupla con 5 componentes

>>> x = ('abc', 73, 5.28, 'rs', 5)

La representación de una tupla en celdas de memoria numeradas desde cero:

'abc' 73 5.28 'rs' 5


0 1 2 3 4

Los siguientes ejemplo son iguales a los usados en la sección en la que se describen las
listas, pero ahora los resultados no son listas sino tuplas.

>>> x[0] Componente 0 (ubicado en la celda 0)


'abc' (es el primer componente o primera celda)

>>> x[2] Componente 2 (ubicado en la celda 2)


5.28 (es el tercer componente o tercera celda)

>>> x[1:4] Componentes desde 1 hasta el 3 (celdas 1 a 3)


(73, 5.28, 'rs') (el rango no incluye el extremo final)

>>> x[2:] Componentes 2 hasta el final (celda 2 hasta el final)


(5.28, 'rs', 5) Los resultados también son tuplas

>>> x[1] = 45 Error: no se pueden modificar los elementos de tuplas

TypeError: 'tuple' object does not support item assignment

Python Programación
309

Tupla con componentes de tipo estructurado

>>> x=(3,[6,7],8,(4,5),2)
>>> x[1]
[6, 7]

>>> x[1][1]=3 Se puede modificar el componente interno lista


>>> x
(3, [6, 3], 8, (4, 5), 2)

>>> x[3][1]=3 Error: No se pueden modificar componentes tupla

TypeError: 'tuple' object does not support item assignment

Los paréntesis son opcionales para definir tuplas

>>> x = ('abc', 73, 5.28, 'rs', 5)


>>> x
('abc', 73, 5.28, 'rs', 5)

Se pueden omitir los paréntesis para definir una tupla

>>> x = 'abc', 73, 5.28, 'rs', 5


>>> print(x)
('abc', 73, 5.28, 'rs', 5)

Una tupla se puede convertir a lista

>>> x = ('abc', 73, 5.28, 'rs', 5)


>>> x = list(x)
>>> x[1]=75

Una lista se puede convertir a tupla

>>> x = ['abc', 73, 5.28, 'rs', 5]


>>> x = tuple(x)
>>> print(x)
('abc', 73, 5.28, 'rs', 5)

Los valores de una tupla se pueden desempacar asignando a variables

>>> t = (34,'abc',42)
>>> a,b,c = t
>>> a
34
>>> b
'abc'
>>> c
42

Python Programación
310

Una función para formar tuplas entre dos listas: zip


>>> c=[101,231,725]
>>> m=['Algebra','Física','Química']
>>> p=zip(c,m)
>>> list(p)
[(101, 'Algebra'), (231, 'Física'), (725, 'Química')]

Las tuplas se pueden concatenar y reproducir

>>> a=(23,45,28)
>>> b=(52,19)
>>> c=a+b
>>> c
(23, 45, 28, 52, 19)
>>> d=3*b
>>> d
(52, 19, 52, 19, 52, 19)

Algunas funciones y operadores aplicables a tuplas

>>> a=(28,73,45,67,26,45)
>>> len(c)
6
>>> 45 in a
True
>>> max(a)
73
>>> max(a[2:len(a)]) Se puede especificar el rango de búsqueda
67
>>> min(a)
26
>>> sum(a)
284
>>> sum(a[2:6])
183
>>> del a Elimina la tupla completa
>>> a
>>> a=(27,23,45,23,28)
>>> a.index(23) Indice de la primera coincidencia
1
>>> a.count(23) Conteo de coincidencias
2

No se puede eliminar elementos de una tupla, para hacerlo primero se la puede convertir a
una lista, realizar la operación y luego convertirla nuevamente a tupla.

Python Programación
311

Se puede iterar sobre una tupla

>>> a=(28,73,45,67,26,45)
>>> for e in a:
print(e)
28
73
45
67
26
45

Notación especial para agregar un elemento a una tupla

>>> x=5 x es un entero


>>> print(x)
5
>>> x=5, x es una tupla (la coma hace la diferencia)
>>> print(x)
(5,)

>>> x=(5) x es un entero


>>> print(x)
5
>>> x=(5,) x es una tupla (la coma hace la diferencia)
>>> print(x)
(5,)

>>> x=x+(7)
TypeError: solamente se pueden concatenar tuplas a tuplas

>>> x=5,
>>> x=x+(7,) Concatenación correcta
>>> x x es una tupla
(5, 7)

>>> x=(5,7,4,8)
>>> x=x+(6)
TypeError: solamente se pueden concatenar tuplas a tuplas

>>> x=x+(6,) Concatenación correcta


>>> x
(5, 7, 4, 8, 6)

Python Programación
312

Una función para formar una tupla con los cuadrados de los enteros

def cuadrado(n):
y=2*n
return y

t=()
for n in range(5):
e=cuadrado(n)
t=t+(e) Esta concatenación es incorrecta
print(t)

TypeError: solamente se pueden concatenar tuplas a tuplas

Una solución correcta es redefinir el resultado obtenido de la función como una tupla:

def cuadrado(n):
y=2*n
return y

t=()
for n in range(5):
e=cuadrado(n)
t=t+(e,)
print(t)

Resultado

(0, 2, 4, 6, 8)

Otra solución correcta es definir como una tupla el resultado que entrega la función:

def cuadrado(n):
y=2*n
return y,

t=()
for n in range(5):
e=cuadrado(n)
t=t+(e)
print(t)

Resultado

(0, 2, 4, 6, 8)

Opcionalmente, se puede operar con listas y el resultado final convertirlo a tupla antes de
mostrar el resultado.

Python Programación
313

7.6 Conjuntos

Los conjuntos se construyen como una lista de valores encerrados entre llaves. También
se pueden definir conjuntos con la instrucción set(c) en donde c representa cualquier
objeto que se pueda indexar, como tuplas, listas o cadenas de caracteres. Por definición,
los componentes de un conjunto no están ordenados ni contienen elementos repetidos.

El resultado de la definición y operación entre conjuntos es un objeto que no se puede


indexar. Pero se lo puede convertir nuevamente a un objeto indexable.

Sean: a, b: conjuntos
Símbolo Operación Resultado Función equivalente
a | b Unión de conjuntos Conjunto a.union(b)
a & b Intersección de conjuntos Conjunto a.intersection(b)
a – b Diferencia de conjuntos Conjunto a.difference(b)
a ^ b Diferencia simétrica de conjunts Conjunto a.symmetric_difference(b)
a < b Subconjunto Valor lógico a.issubset(b)

>>> u={4,6,7,3,8,6} Definición directa de un conjunto


>>> u
{8, 3, 4, 6, 7}

>>> r=set([7,3,8,6,9,8]) Definición de un conjunto desde una lista


>>> r (Se puede usar la definición de conjunto
{8, 9, 3, 6, 7} para eliminar elementos repetidos)

>>> a = {3, 4, 9, 6, 7} Conjuntos


>>> b = {4, 6, 2, 9, 7, 5}

>>> c=a|b Operación de unión entre los conjuntos a, b


>>> c
{2, 3, 4, 5, 6, 7, 9}

>>> c=a.union(b) El mismo resultado que c = a|b


>>> c
{2, 3, 4, 5, 6, 7, 9}

>>> c=a&b Intersección


>>> c
{9, 4, 6, 7}

>>> c=b-a Diferencia


>>> c
{2, 5}

>>> c=a^b Diferencia simétrica


>>> c
{2, 3, 5}

Python Programación
314

>>> a={2,5,3,7,8,9}
>>> b={9,5,4}
>>> c={9,5,8}
>>> b<a
False
>>> c<a
True

Propiedad de pertenencia de un elemento en un conjunto


>>> x={7,3,8,6,9}
>>> 5 in x
False
>>> 3 in x
True
>>> 6 not in x
False

Conversión de un conjunto a lista con la función list


>>> c = {3, 5, 6, 8}
>>> c[1] Error: los conjuntos no se pueden indexar
TypeError: 'set' object does not support indexing

>>> d=list(c) La función list convierte el conjunto en lista


>>> d
[8, 3, 5, 6]

>>> d[1]=7 La lista es indexable y modificable


>>> print(d)
[8, 7, 5, 6]

>>> c=set(d) Se redefine la lista como un conjunto


>>> c
{8, 5, 6, 7} Los elementos no están ordenados

Cadenas de caracteres convertidas a listas y conjuntos


>>> x='adivinanza' Cadena, indexable pero no modificable
>>> t=set(x)
>>> t
{'n', 'i', 'd', 'v', 'z', 'a'} Conjunto de caracteres sin repeticiones
(los elementos no mantienen el orden)
El conjunto no es modificable ni indexable
>>> r=list(x)
>>> r
['a', 'd', 'i', 'v', 'i', 'n', 'a', 'n', 'z', 'a']
Lista de caracteres con repeticiones
(los elementos están ordenados)
>>> r[1]='d' La lista es indexable y modificable
>>> r

Python Programación
315

Uso de conjuntos para encontrar caracteres comunes entre cadenas de caracteres:

>>> a='programa'
>>> b='panorama'
>>> c=set(a) & set(b) Convertir cadenas a conjuntos
>>> c
{'a', 'r', 'o', 'p', 'm'} Los elementos no están en orden
>>> len(c)
5

Algunas funciones comunes aplicables a conjuntos

>>> x={7,3,8,6,9}
>>> len(x)
5
>>> sum(x)
33
>>> min(x)
3
>>> max(x)
9

Definición de conjunto vacío

>>> x=set() La definición x={ } crea un diccionario vacío

Operaciones para modificar la estructura de los conjuntos

>>> x=set([7,3,8,6,9])
>>> x
{8, 9, 3, 6, 7}

>>> x.add(5) Agregar elemento


>>> x
{3, 5, 6, 7, 8, 9}

>>> x={7,3,8,6,9}
>>> x.remove(6) Eliminar elemento
>>> x
{8, 9, 3, 7}
>>> x.remove(5) Error: el elemento no está en el conjunto
KeyError: 5

>>> x.discard(5) No genera error si no está. Si está lo elimina


>>> x
{8, 9, 3, 7}
>>> x.discard(9)
>>> x
{8, 3, 7}

Python Programación
316

>>> x={7,3,8,6,9}
>>> t=x.pop() Elimina un elemento aleatorio del conjunto
>>> t
8
>>> t=x.pop()
>>> t
9
>>> t=x.pop()
>>> t
3
>>> x Contenido actual del conjunto
{6, 7}

Se puede iterar sobre un conjunto. Los elementos de conjuntos no están ordenados

>>> x={7,3,8,6,9}
>>> for e in x:
print(e)

8
9
3
6
7

Ejemplo. Creacion de un conjunto con lectura de datos

c=set() #iniciar el conjunto vacío


n=int(input('Cuantos datos: '))
for i in range(n):
e=int(input('Elemento: '))
c.add(e)
print(c)

Prueba del programa

>>>
Cuantos datos: 5
Elemento: 23
Elemento: 45
Elemento: 23
Elemento: 78
Elemento: 42
{42, 45, 78, 23} El elemento repetido fue eliminado
Los elementos no están ordenados

Python Programación

También podría gustarte