Está en la página 1de 41

Fundamentos de Programación

CCPG1043
Unidad 6 – Colecciones
Agenda
6.1 Tipos de colecciones y sus características.
6.2 Operaciones con colecciones.
Objetivos
• Identificar los diferentes tipos de colecciones para representar datos
relacionados.
• Usar un tipo de colección para resolver un problema que involucre
manejo de datos.
• Utilizar colecciones anidadas para resolver problemas complejos.
• Aplicar algoritmos receta para resolver problemas que utilicen
colecciones dentro de un programa.
6.1 – Tipos de colecciones y sus
características
Colecciones

Las colecciones permiten agrupar datos, los cuales


pueden ser de tipos diferentes.

Python soporta distintos tipos de colecciones, que a su


vez pueden combinarse y formar tipos de datos
compuestos
Tipos de colecciones

Listas

Tuplas

Conjuntos (Sets)

Diccionarios
Tuplas
Tuplas

• A diferencia de las listas [ ], las tuplas se inicializan con ( ).

• Son inmutables, es decir, su contenido no puede ser


modificado.
• No tienen función append

• El slicing funciona como en las listas.


• Recuerda que al extraer una porción de una lista, se obtiene una lista
nueva; al extraerla de una tupla, se obtiene una tupla nueva.
Tuplas
Definición:
>>> tupla = ("a", "b", "c", "z", 11)

Acceso a elementos:
>>> tupla[0]
Índice
Devuelve: 'a'
>>> tupla[−1]
Devuelve: 11
>>> tupla[1:3]
Slicing
Devuelve: ('b', 'c')
Tuplas
• No pueden eliminarse elementos de una tupla.
• Las tuplas son inmutables.
• Las tuplas no tienen los métodos remove ni pop.

• Las tuplas pueden convertirse en listas, y viceversa. La función


incorporada tuple(…) toma una lista y devuelve una tupla con los
mismos elementos, y la función list(…) toma una tupla y devuelve
una lista.
• En la práctica, tuple congela una lista, y list descongela una tupla.
Tuplas

Convertir una lista en una tupla:

>>> lista = ["a", "b", "c", "z", 11]


>>> tupla = tuple(lista)

Convertir una tupla en una lista:

>>> list(tupla)
Tuplas

• Una propiedad útil de las tuplas es que permite la


heterogeneidad de los datos.
• Una tupla puede contener más de un tipo de dato nativo.
• ¡Una tupla puede contener otras colecciones!

TIP:
Pensemos en las tuplas como una lista constante.
Tuplas
Empaquetando y desempaquetando datos

# empaquetado de datos, declaración


>>> t = (12345, 54321, "hola")

#desempaquetado
>>> x, y, z = t

¿Cuáles son los valores delas variables x, y, z?


Tuplas
Las tuplas pueden servir para empaquetar datos de retorno dentro de una
función. Cuando la función sea llamada, se deben de declarar el mismo
número de variables para poder desempaquetar todos sus valores.

def f(r):
""" Return (circumference, area) of a circle of radius r
""“

c=2*math.pi*r
a=math.pi*r*r
return (c, a)

¿Cómo invocaríamos a la función f?


Tuplas: ¿Y si queremos modificar los valores?
Supongamos que tenemos la siguiente información:

>>> julia = ("Julia", "Roberts", 1967, "Duplicity", 2009, "Actress" )

Si Julia tiene un filme reciente, podemos cambiar el valor de la


variable que hace referencia a la tupla original para que referencie a
una nueva tupla que a su vez usa información de la tupla original:

>>> julia = julia[:3] + ("Eat Pray Love", 2010) + julia[5:]


Tuplas: Operadores

Operador Descripción Ejemplo de uso


+ Concatena dos tuplas t3 = t1 + t2

* Concatena una tupla n veces t2 = t1 * 4

Retorna True si un valor se encuentra


in valor in t1
en la tupla
Tuplas: Funciones
Operador Descripción Ejemplo de uso
len (t)
len ( ) Retorna el número de elementos en una tupla
len(t[i:j])
max(t)
max ( ) Retorna el valor máximo en una tupla
max(t[i:j])
min(t)
min ( ) Retorna el valor mínimo en una tpla
min(t[i:j])
Convierte una secuencia o colección de valores
tuple ( ) tuple(seq)
a una tupla
del ( ) Elimina una tupla completamente del(t)
Retorma la suma de todos los valores de una
sum ( ) suma=sum(t)
tupla
Conjuntos (Sets)
Conjuntos (Sets)

• Un conjunto (set) contiene una colección de objetos


únicos no ordenados inmutables.

• De manera similar que los conjuntos matemáticos, los


conjuntos en Python no pueden contener ocurrencias del
mismo elemento.
Conjuntos
Definición:

#Definición directa
>>> u= {4,6,1,3,8,6}

>>> set1 = set() # Un nuevo set vacío

>>> set1.add("cat") # Añadir un elemento

>>> u={ } ¡No crea un Set vacío!


Conjuntos

• Los conjuntos no soportan indexamiento ni slicing.


• No es correcto utilizar s[0] pues retornará un error.

• No se les puede asignar valores directamente.


• s[0]=10 Retornará error.
Conjuntos

• Una lista se puede convertir a un set con la función


set(), eliminando aquellos elementos que se repiten.

• De la misma forma un set se puede convertir a una lista


con la función list(…).
Conjuntos
Se puede crear un conjunto de datos a partir de una lista
utilizando la función set:

>>> set([0, 1, 2, 3])


set([0, 1, 2, 3])

>>> set("obtuse")
set(['b', 'e', 'o', 's', 'u', 't'])
Conjuntos

• Para saber el número de elementos se utiliza len(s), al igual


que las listas.

• Se puede obtener el elemento máximo y mínimo y la suma de


todos sus elementos con las funciones max(s), min(s) y
sum(s) respectivamente (siempre que sus elementos sean
enteros o reales).
Conjuntos: Pertenencia
Se puede verificar si un elemento existe en el set mediante el operador in. De
la misma forma se puede verificar si no existe mediante el operador not in:

>>> s = set([32, 9, 12, 14, 54, 26])


>>> 32 in s
True

>>> 6 in s
False

>>> 6 not in s
True
Conjuntos: Pertenencia
También se puede verificar la pertenencia de conjuntos enteros.
Si nos dan dos subconjuntos, podemos verificar si el primero es un
subconjunto del segundo o superconjunto.

>>> s.issubset(set([32, 8, 9, 12, 14, -4, 54, 26, 19]))


True

>>> s.issuperset(set([9, 12]))


True
Modificando Conjuntos
Se pueden agregar elementos a un set con la función add :

>>> s = set([12, 26, 54])


>>> s.add(32)
>>> s
set([32, 26, 12, 54])

Hay que tener en cuenta que si se agrega un elemento que ya existe en


el set, el resultado será el mismo.
Modificando Conjuntos: Agregar Elementos
Otra forma de agregar un grupo de elementos al set es utilizando la
función update. Al set anterior, trataremos de agregar un grupo de
elementos:

>>> s.update([26, 12, 9, 14])

>>> s
set([32, 9, 12, 14, 54, 26])
Modificando Conjuntos: Eliminar Elementos

Las siguientes funciones se pueden utilizar para eliminar elementos de un


set:

• pop
• remove
• discard
• clear
Modificando Conjuntos: Eliminar Elementos

La función pop elimina un elemento aleatorio del set. (lo retorna)

>>> s = set([1,2,3,4,5,6])
>>> s.pop()
1

>>> s
set([2,3,4,5,6])
Modificando Conjuntos: Eliminar Elementos
La función remove elimina un elemento específico. (no lo retorna)

>>> s.remove(3)

>>> s
set([2,4,5,6])

Hay que tener cuidado al eliminar un elemento que no se encuentra en el


set, esto causaría un error.

La función discard tiene la misma funcionalidad que remove, pero si el


elemento a remover no se encuentra en el set no hace nada.
Modificando Conjuntos: Eliminar Elementos

La función clear nos permite eliminar todos los elementos de un set.

>>> s.clear()

>>> s
set([])
Conjuntos : Operaciones

Dada la naturaleza de este tipo de colección se pueden


realizar las mismas operaciones que se realizan en los
conjuntos, tal como unión, intersección, diferencia,
diferencia simétrica, entre otras.
Conjuntos : Operaciones
Sean a, b dos conjuntos:

Operación Descripción Funciones Equivalentes


a|b Unión de conjuntos a.union(b)

a&b Intersección de conjuntos a.intersection(b)

a-b Diferencia de conjuntos a.difference(b)


a^b Diferencia simétrica de conjuntos a.symmetric_difference(b)
Conjuntos: Operaciones

>>> A = set([1, 2, 3, 4, 5])


>>> B = set([4, 5, 6, 7, 8])

#INTERSECCION
>>> A & B
{4, 5}

>>> A.intersection(B)
{4, 5}

>>> B.intersection(A)
{4, 5}
Conjuntos: Operaciones
>>> A = set([1, 2, 3, 4, 5])
>>> B = set([4, 5, 6, 7, 8])

# UNION

>>> A | B
{1, 2, 3, 4, 5, 6, 7, 8}

>>> A.union(B)

{1, 2, 3, 4, 5, 6, 7, 8}
>>> B.union(A)
{1, 2, 3, 4, 5, 6, 7, 8}
Conjuntos: Operaciones
>>> A = set([1, 2, 3, 4, 5])
>>> B = set([4, 5, 6, 7, 8])

#DIFERENCIA
>>> A - B
{1, 2, 3}

>>> A.difference(B)
{1, 2, 3}

>>> B - A
{8, 6, 7}
Conjuntos: Operaciones

>>> A = set([1, 2, 3, 4, 5])


>>> B = set([4, 5, 6, 7, 8])

#DIFERENCIA SIMETRICA
>>> A ^ B
{1, 2, 3, 6, 7, 8}

>>> A.symmetric_difference(B)
{1, 2, 3, 6, 7, 8}

>>> B.symmetric_difference(A)
{1, 2, 3, 6, 7, 8}
Ejercicios

• Cree la función filtrarPalabras(texto) que recibe el texto de un libro y


retorna una lista de las palabras del texto sin repetir
Ejercicios

• Cree la función productosComunes(clienteA, clienteB, clienteC) que


recibe la lista de los productos comprados de usuarios/clientes. La
función muestra por pantalla cuáles productos compran en común los
tres usuarios.
Ejercicios

• Una empresa guarda la lista de correo de sus empleados en dos


archivos diferentes. Puede darse el caso de que en ambos archivos
exista el correo del mismo empleado. Se desea enviar un correo
masivo a todos los empleados de la empresa, de manera que los
correos no se repitan en el destinatario.
• Cree la función crearListaCorreos(lista_A, lista_B) que reciba las dos
listas de correos de empleados lista_A y lista_B y retorne una lista con
los correos de todos los empleados de la empresa (sin repetir).

También podría gustarte