Está en la página 1de 79

CCPG1001

Fundamentos de Programación

Unidad 7 – Colecciones
Agenda
7.1 Tipos de colecciones y sus características.
7.3 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.
7.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
• Una tupla es un secuencia immutable de objetos en Python (su
contenido no puede cambiar).
• No tienen función append, ni remove

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

• 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.
Creación de Tuplas
• En una tupla los elementos están separados por comas y entre
paréntesis Crear un tupla es tan simple como poner valores
separados por comas entre par’e. Opcionalmente se puede poner
esos valores entre parentésis (es lo recomendado).
#definicion de una tupla con los elementos 2,3,4
t = (2,3,4)
print(t)

#para definir una tupla que tiene un solo elemento


#debemos colocar una coma despues del ultimo elemento
t2 = ("rojo",)
print(t2)
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')
Creación de tuplas
• También se puede definir una tupla colocando varios valores
separados por comas
#definicion de una tupla con los elementos 2,3,4
t3 = 2,3,4
print(t)

#para definir una tupla que tiene un solo elemento


#debemos colocar una coma despues del ultimo elemento
t4 = "rojo",
print(t2)
Las Tuplas son inmutables
• Las tuplas son inmutables.
• No se pueden remover elementos, no tienen los métodos remove ni pop.
• No se pueden agregar elementos, no tienen método append.
• No se puede modificar el valor de uno de sus elementos.
Tuplas
• 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:

l = 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
• La variable persona apunta a una tupla con tres elementos de
distintos tipos.
persona = ("pedro molina",17,["nadar","volley","cine"])

• Obtener el nombre de la persona


nombre = persona[0]

• Obtener la edad de la persona


edad = persona[1]
Tuplas
persona = ("pedro molina",17,["nadar","volley","cine"])

• Obtener el primer hobby de la persona


hobby1= persona[2][0]

• Obtener el segundo hobby de la persona


hobby2= persona[2][1]
Tuplas – Empaquetado y desempaquetado
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 – Empaquetado y desempaquetado
Al desempaquetar una tupla, si las variables no son
distintas, se pierden valores. Y si las variables no son
exactamente la longitud de la tupla se produce un error
Tuplas: ¿Y si queremos modificar los valores?
¿Que pasa si queremos agregar la cedula de la persona después del
nombre?
persona = ("pedro molina",17,["nadar","volley","cine"])

Tenemos dos opciones:


Opción 1: Creamos una nueva referencia a persona usando la
información anterior y agregando la información nueva

persona = persona[0]+"0987654321"+persona[1:]
Tuplas: ¿Y si queremos modificar los valores?
¿Que pasa si queremos agregar la cedula de la persona después del
nombre?
persona = ("pedro molina",17,["nadar","volley","cine"])

Tenemos dos opciones:


Opción 2: Creamos una lista a partir de la tupla, modificamos el
valor de la lista y volvemos a crear la tupla
listapersona = list(persona)
listapersona.insert(1,"0987654321")
persona = tuple(listapersona)
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)

• Es una secuencia de datos no ordenadas sin repetir.

• Los usos básicos incluyen verificación de pertenencia y


eliminación de entradas repetidas.

• 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 otras colecciones o
cadena de caracteres utilizando la función set:

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


{0, 1, 2, 3}

>>> set("obtuse")
{'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 = set([32, 9, 12, 14, 54, 26])

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


True

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


True
Agregar un elemento
Se pueden agregar elementos a un set con la función add :

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


>>> s.add(32)
>>> s
{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.
Agregar Varios elementos
Otra forma de agregar un grupo de elementos al set es utilizando la
función update. Al set anterior, agregaremos un grupo de elementos:

>>> s
{32, 26, 12, 54}

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

>>> s
{32, 9, 12, 14, 54, 26}
Modificando Conjuntos: Eliminar Elementos

Las siguientes funciones se pueden utilizar para eliminar elementos de un


set:

• pop()
• remove( element )
• discard( element )
• clear()
Modificando Conjuntos: Eliminar Elementos

La función pop, elimina un elemento aleatorio del set.

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

>>> s
set([2,3,4,5,6])
Modificando Conjuntos: Eliminar Elementos
Tenemos también la función remove para eliminar un elemento
específico:

>>> 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 = {1, 2, 3, 4, 5}
>>> B = {4, 5, 6, 7, 8}
2 6
# UNION 1
4
7
>>> A | B 3
{1, 2, 3, 4, 5, 6, 7, 8} 5
8
>>> A.union(B)

{1, 2, 3, 4, 5, 6, 7, 8}
>>> B.union(A) A | B (a unión B)
{1, 2, 3, 4, 5, 6, 7, 8}
Conjuntos: Operaciones
>>> A = set([1, 2, 3, 4, 5])
>>> B = set([4, 5, 6, 7, 8]) 2 6
1
4
#INTERSECCION 7
>>> A & B 3
5
{4, 5} 8

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

>>> B.intersection(A) A & B


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

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

B - A
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
1. Crear un programa que muestre por pantalla una lista sin palabras
repetidas de una frase ingresada por el usuario.

2. Una empresa de marketing desea saber que productos en común


compran tres usuarios en un supermercado. Para esto, la empresa
tiene una lista de los productos comprados para cada usuario.
Mostrar por pantalla cuáles productos compran en común los tres
usuarios.
Ejercicios
3. Las palabras panvocálicas son las que tienen las cinco vocales. Por
ejemplo: centrifugado, bisabuelo, hipotenusa.
• Escriba la función es_panvocalica(palabra) que indique si una palabra es
panvocálica o no:

>>> es_panvocalica('educativo')
True
>>> es_panvocalica('pedagogico')
False
Diccionarios
Diccionarios

• Un diccionario es un conjunto no ordenado de pares clave:valor.7


• Las claven son únicas.

• En un diccionario, si lo pensamos como un conjunto de elementos,


cada elemento tiene dos partes, una es la llamada clave (key), y la
otra es la llamada valor (value).
Diccionarios

Tanto la clave como el valor pueden ser casi cualquier cosa (cualquier
tipo de dato), pero la lógica del diccionario es que llamando a la clave
se obtenga su valor.
Diccionarios

• Los componentes de un diccionario no están en un orden


específico.

• Se pueden obtener los valores por su clave, pero no se


pueden obtener las claves por el valor.
Diccionarios
• No puede haber claves duplicadas en un diccionario. La asignación
de un valor a una clave existente borrará el valor anterior.

• Su representación conceptual en la memoria son celdas identificadas


con la clave.
Claves
x={123: ‘Algebra’, 325: ‘Fisica’, 215: ‘Química’}
Valores
Diccionarios
• Los valores de un diccionario pueden ser de cualquier tipo, incluidas
cadenas, enteros, objetos o incluso otros diccionarios. Y en un mismo
diccionario, los valores no tienen que ser todos del mismo tipo: se
pueden mezclar y emparejar como sea necesario.

• Las claves de un diccionario están más restringidas, pero pueden ser


cadenas, enteros, y algunos tipos más. También se pueden mezclar y
emparejar distintos tipos de claves en un diccionario.
Diccionarios

Definición de un diccionario
# Diccionario vacío
dic = {}

#Diccionario con valores


dic= {“200705080”: ‘Jhonny Pincay’, “201525896”: ‘Martha Perez’}
Diccionarios
Agregando elementos
dic[“201685296”] = “Juan Castro”

dic[“200978945”] = “Juana Rendon”

Modificar un elemento
#Diccionario Original
dic= {“200705080”: ‘Jhonny Pincay’, “201525896”: ‘Martha Perez’}

#Modificando Elemento
dic[“200703080”] = “Vladimir Pincay”

#Diccionario Resultante
dic= {“200705080”: ‘Vladimir Pincay’, “201525896”: ‘Martha Perez’}
Diccionarios
Eliminar un elemento

del dic[“201685296”]

del dic[“200978945”]

Eliminar todos los elementos

dic.clear()
Diccionarios: Función keys()
La función keys() de un diccionario devuelve una colección con todas las claves.
Las claves no necesariamente estarán en el orden en que se definió el diccionario.

midiccionario = {'Ciudad': 'Guayaquil', 'Nombre': 'Flavio',


'Apellido': 'Danesse', 'Edad': 30, 'FechaNac': '21/10/1986'}

>>> midiccionario.keys()

dict_keys(['Ciudad', 'Nombre', 'Apellido', 'Edad', 'FechaNac'])

Usar método list( ), si deseas transformar la colección con


las claves a un dato tipo lista.
Diccionarios: Función values()

La función values() devuelve una colección con todos los valores.


La colección está en el mismo orden que la devuelta por keys().

>>> midiccionario.values()

dict_values(['Guayaquil', 'Flavio', 'Danesse', 30, '21/10/1986'])

Usar método list( ), si deseas transformar la colección con


las claves a un dato tipo lista.
Diccionarios: Función items()

La función items() devuelve una lista de tuplas de la forma (key, valor).


Esta lista contiene todos los datos del diccionario.

>>> midiccionario.items()

dict_items([('Ciudad', 'Guayaquil'), ('Nombre', 'Flavio'),


('Apellido', 'Danesse'), ('Edad', 30), ('FechaNac', '21/10/1986')])
Diccionarios: Función get()

La función get() devuelve el valor asociado con la clave en el


diccionario o un valor por defecto -None- si la clave no existe:

>>> midiccionario.get('FechaNac')
'21/10/1986'
Ejemplo: Diccionario con valores tipo lista

• Definir un diccionario con clave numérica y valor asociado


que contiene una lista de dos elementos: nombre y edad

>> dic = {123: [‘Anita’, 25], 234: [‘Elena’, 34], 456:[‘Carmen’, 45]}
Ejemplo: Diccionario con valores tipo lista
• Para acceder al contenido de la lista asociada a la clave,
debemos hacerlo a través de la clave en el diccionario y
luego a través del índice del elemento de la lista.
>> dic = {123: [‘Anita’, 25], 234: [‘Elena’, 34], 456:[‘Carmen’, 45]}

>> dic[123][0]
‘Anita’

>> dic[123][1]
25
Funciones comunes aplicables a Diccionarios
>> dic = {123: [‘Anita’, 25], 234: [‘Elena’, 34], 456:[‘Carmen’, 45]}

# Cantidad de elementos
>> len(dic)
3

# El mayor valor de clave


>> max(dic)
456

#El menor valor de clave


>>min (dic)
123

#Eliminar el diccionario de memoria


>> del dic
Funciones comunes aplicables a Diccionarios
>> dic = {123: [‘Anita’, 25], 234: [‘Elena’, 34], 456:[‘Carmen’, 45]}

# Verificar si una clave se encuentra en el Diccionario


>> 123 in dic
True

>> 123 not in dic


False

>> 789 in dic


False

# Obtener una lista de las claves


>> sorted(dic)
[123, 234, 456]
Convertir Lista a Diccionario
• La lista debe tener una estructura compatible con el
diccionario que se desea obtener
#Lista de Tuplas
Lista de
>>> a=[(10,”Marcos”), (20,”Martha”)]
tuplas
>>> d= dict(a)
>>> d

{10: “Marcos”, 20: “Martha”}

¿Qué elementos se convirtieron en las claves y cuáles en


valores del diccionario?
Crear una lista con las claves de un
Diccionario: keys()

>> dic={10: “Marcos”, 20: “Martha”}


>> c= dic.keys()
>> list(c)
[10, 20]

#También se obtiene la lista de claves


#tomándolas directamente con list
>> list(dic)
[10,20]
Crear una lista con los valores de un
Diccionario: values()

>> dic={10: “Marcos”, 20: “Martha”}


>> v= dic.values()
>> list(v)

[“Marcos”, “Martha”]
Crear una lista con los valores de un
diccionario: ítems()

• Los componentes de la lista resultante son tuplas


>> dic={10: “Marcos”, 20: “Martha”}
>> c = dic.items()
>> lista = list (c)

>> lista
[(10,”Marcos”), (20,“Martha”)]
7.1 – Operaciones con colecciones
Operaciones con colecciones

Tuplas Sets Diccionarios


Unión, intersección,
Concatenación diferencia, diferencia Añadir, modificar y
simétrica. eliminar elementos.

Verificar pertenencia de
Indexamiento y slicing
conjuntos

Acceso a valores a
Verificar existencia de Añadir y eliminar través de las claves
elementos (in) elementos.
Iterando Colecciones
Tupla

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

28
73
45
67
26
45
Conjunto

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

8
9
3
6
7
Diccionarios
Por claves:

>> d={123: [‘libro’, 20], 234:[‘cuaderno’, 30]}


c toma el valor de las claves del diccionario
>> for c in d:
print(c, d[c] )

Usando la clave accedo a


cada valor en el diccionario
Diccionarios

Por ítems separados en clave, valor:

>> d={123: [‘libro’, 20], 234:[‘cuaderno’, 30]}

>> for c,v in d.items():


print(c,v)

C tendrá el tipo de la clave


V tendrá el tipo de los valores
Diccionarios

Cuando iteramos un diccionario, sus elementos no


necesariamente estarán en el orden en que fueron
agregados.
Bibliografía
• Rodríguez, Luis. Python Programación Luis Rodríguez, Python
Programación.
• Downey, A., Elkner, J., & Meyers, C. (2012). How to think like a
computer scientist: learning with python. Green Tea Press, Wellesley,
Massachusetts.
iiiiiii

iiii iiiii iiiii

iiiii

iiiii

iiiiiiii

También podría gustarte