Python – Clase 3
Objetivos de la clase
Conocer las Estructuras de datos en Python.
Listas.
Tuplas
Range
Diccionarios
Conjuntos
Listas
Las listas son una estructura de datos muy versátil, la cual puede ser escrita como una
lista de valores separados por coma (ítems) entre corchetes. Usaremos listas para poder
modelar datos compuestos pero cuya cantidad y valor varían a lo largo del tiempo
MiLista=[0,1,’alfabeto’,[‘x’,’y’,’z’]]
Las listas en Python son:
heterogéneas: pueden estar conformadas por elementos de distintos tipos,
incluidos otras listas.
mutables: sus elementos pueden modificarse.
Una lista en Python es una estructura de datos formada por una secuencia ordenada de
objetos.
Los elementos de una lista pueden accederse mediante su índice, siendo 0 el índice del
primer elemento, y el último su cantidad de elementos menos 1.
MiLista[0] sería 0
MiLista[2] sería “alfabeto”
MiLista[3] sería [‘x,’y’,’z’]
MiLista[3][1] sería ‘y’
La función len() devuelve la longitud de la lista (su cantidad de elementos).
Len(MiLista) sería 4
Indexamos como con un string. (slicing)
MiLista[-] sería [‘x,’y’,’z’] el último elemento
MiLista[0:4:2] sería [0,’alfabeto’]
MiLista[::-1] sería [[‘x,’y’,’z’],’alfabeto’,1,0]
1
Python – Clase 3
Podemos cambiar un elemento de la lista ya que es mutable.
MiLista[0]=’Hola’ =[‘Hola’,1,’alfabeto’,[‘x’,’y’,’z’]]
Métodos del objeto Lista
append()
Este método agrega un elemento al final de una lista.
[Link](6) =[‘Hola’,1,’alfabeto’,[‘x’,’y’,’z’],6]
extend()
Este método extiende una lista agregando un iterable al final.
Si ll=[1,2] entonces [Link](ll) =[‘Hola’,1,’alfabeto’,[‘x’,’y’,’z’],6,1,2]
insert(i,x)
Este método inserta el elemento x en la lista, en el índice i.
[Link](2,’Mundo’) =[‘Hola’,’Mundo’,1,’alfabeto’,[‘x’,’y’,’z’],6,1,2]
pop()
Este método devuelve el último elemento de la lista, y lo borra de la misma. Se le puede
pasar el índice del elemento a borrar , sino por default toma -1
[Link](0) =[’Mundo’,1,’alfabeto’,[‘x’,’y’,’z’],6,1,2]
[Link]() =[’Mundo’,1,’alfabeto’,[‘x’,’y’,’z’],6,1]
count()
Este método recibe un elemento como argumento, y cuenta la cantidad de veces que
aparece en la lista. Si no lo encuentra devuelve 0
[Link](1) sería 2
index()
Este método recibe un elemento como argumento, y devuelve el índice de su primera
aparición en la lista. Si no lo encuentra devuelve error
[Link](1) sería 1
remove()
Este método recibe como argumento un elemento, y borra su primera aparición en la
lista. Si no lo encuentra devuelve error
[Link](1) =[’Mundo’,’alfabeto’,[‘x’,’y’,’z’],6,1]
reverse()
Este método invierte el orden de los elementos de una lista.
[Link] =[1,6, [‘x’,’y’,’z’],’alfabeto’, ’Mundo’]
sort()
Este método ordena los elementos de una lista en forma ascendente. Puede llevar
reverse=True para ordenar en forma descendente. Los elementos deben ser del mismo
tipo sino da error.
2
Python – Clase 3
Lista=[1,5,3,7]
[Link]() =[1,3,5,7]
[Link](reverse=True) =[7,5,3,1]
Notar que:
Si a un string le hacemos Split nos devuelve una lista:
mensaje = "Hola Mundo"
lmens=[Link]() # retorna una lista
print(lmens) [‘Hola’,’Mundo’]
Otras operaciones con listas
Quitar un ítem de una lista.
Podemos eliminar un elemento de una lista dando su índice. Probar:
del my_list[0] # equivalente a x[0:1] = [] que elimina el elemento 0
my_list
del my_list[2:5] # equivalente a x[2:5] = [] que elimina los elementos 2 a 4
my_list
La suma de 2 listas da otra lista.
x = [1,2,3]
y = [4,5,6]
z=x + y
z
[1,2,3,4,5,6]
x = [1,2,3,4];y = [4,5,6];z=x + y
z
[1, 2, 3, 4, 4, 5, 6]
Testear si un dato está en una lista (operador in / not in)
6 in x # parecido a find en MATLAB.
4 in x
5 not in x
Repetir elementos en una lista
x = [None]*10 # None constante objeto nula /vacía. Es un tipo de dato
x
type(x)
<class 'list'>
type(None)
<class 'NoneType'>
x = [1,2]*3 #una lista que repite 3 veces los elementos 1 y 2
x
[1,2,1,2,1,2]
3
Python – Clase 3
Tuplas
Una tupla es una estructura de datos que permite almacenar variosdatos que no podremos
cambiar (datos inmutables), es decir, son como listas que no pueden ser modificadas una
vez creadas .Son de sólo lectura.
t = ('a','b','c')
a = 1, 2, 3 # Los podemos ingresar sin los paréntesis
Si quiero agregar un elemento a una tupla debo crear otra tupla:
a_extendida=a,4,5
Pero cual es el resultado?
print(a_extendida) me dará:((1,2,3),4,5), una tupla de 3 elementos siendo el primero una
tupla.
Entonces lo que deberíamos hacer para agregar valores a una tupla es :
La tupla se convierte primero en una lista
Usar insert() para incorporar el elemento en la lista
Convertir la lista a una tupla.
Diferencias con listas
Son un poco más eficientes que las listas y ocupan menos memoria.
Se usan en general cuando los datos representan valores fijos, que no
cambiarán.
Son muy similares a las listas y comparten varias de sus funciones y métodos
integrados, aunque su principal diferencia es que son inmutables. El objeto de
tipo tupla integra una serie de métodos integrados a continuación
count()
Este método recibe un elemento como argumento, y cuenta la cantidad de veces que
aparece en la lista. Si no lo encuentra devuelve 0
index()
Este método recibe un elemento como argumento, y devuelve el índice de su primera
aparición en la lista. Si no lo encuentra devuelve error
Convertir a tuplas
Para convertir a tipos tuplas debe usar la función tuple(), la cual está integrada en el
interprete Python.
4
Python – Clase 3
Range
Las estructuras de datos del tipo range son números enteros en sucesión aritmética,
inmutables. Inmutable significa que, a diferencia de las listas, los range no se pueden
modificar.
Nota: En Python 2, range() se consideraba una función, pero en Python 3 no se considera
una función, sino un tipo de datos, aunque se utiliza como si fuera una función.
Range acepta 3 argumentos:
El número inicial a partir de cual comienza a contar,
el final que indica hasta dónde llega este rango.
el número de paso, es decir, el que indica si debe saltar o no valores hasta llegar
al número final
Ejemplos:
range(2, 20, 2) genera 2, 4, 6, 8, 10, 12, 14, 16, 18
range(10) genera 0,1,2,3,4,5,6,7,8,9,10
range(-4,0) genera -4,-3,-2,-1
Notar que:
En Python tenemos tipos mutables (como listas, diccionarios)
e inmutables (como los numéricos, tuplas, string, range)
Si guardamos en una variable un range, al mostrar la variable nos muestra que es range
y no sus valores
x=range(5)
x
range(0, 5)
y = range(20,40,2)
y
range(20, 40, 2)
Para poder ver la secuencia numérica lo debemos convertir a lista o a tupla
t=tuple(x) ó directamente t=tuple(range(5))
print(t) nos dará:
(0, 1, 2, 3, 4, 5)
li=list(y) ó directamente li=list(range(20, 40, 2))
print(li) nos dará:
[20, 22, 24, 26, 28, 30, 32, 34, 36, 38]
5
Python – Clase 3
Diccionarios
Es una estructura de datos donde cada valor(value) que contiene lo identificamos por una
clave (key). Mientras que a las listas y tuplas se accede solo y únicamente por un número
de índice, los diccionarios permiten utilizar una key para declarar y acceder a un valor.
Características:
Para acceder a un dato de un diccionario se hace a través de la key del dato.
Ya no accedemos por su ubicación a través del índice. Las keys pueden ser
enteros, strings u otros objetos.
Los values , así como en las listas, pueden contener cualquier tipo de
dato/objeto.
A diferencia de las listas, que estaban implícitamente ordenadas, los
diccionarios no tienen un orden interno. (pues accedemos a sus elementos
por su key)
Para crearlo hacemos igual que si declaramos una lista. El nombre del diccionario seguido
del = y luego entre llaves { } con las duplas Key : Value (Clave:Valor) separadas por
comas.
MiDicc = {clave1 : valor, clave2 : valor, clave3 : valor }
Ejemplo:
mascota={"animal":"Gato",
"edad": 4,
"caracteristica" : “Juguetón. Poco arisco”,
"color" : [“gris”,"blanco”,”beige”] #este valor es una lista
“nombre”: “Huguito”}
Para mostrar sus claves y sus valores usamos los métodos values y keys
[Link]()
[Link]()
Distintas formas de crear diccionarios
dicc = dict(red = "rojo",green="verde",black="negro")
dicc = {'red': 'rojo', 'green': 'verde', 'black': 'negro'}
li=[('red','rojo'), ('green','verde'), ('black','negro')]
dicc=dict(li)
Mostrar un valor por su clave
print(mascota[“nombre”])
print(mascota[“color”][0])
6
Python – Clase 3
Si el valor es una lista, y sólo deseamos ver algunos elementos de esa lista, los corchetes
indicando los índices deben ir seguido de la clave que almacena la lista.
Mostrar cantidad de valores
print("Cantidad de valores: {}".format(len(dicc)))
Ver si un elemento existe en un diccionario
"red" in dicc
"yellow" in dicc
Podemos utilizar el método get que nos permite obtener el valor para una clave, ó sacar
un mensaje en caso que no exista.
#Si no existe la clave “red” devuelve “No encontrado”
print([Link]("red", "No encontrado"))
# Si no existe la clave “grey” devuelve “No encontrado”
print([Link]("grey", "No encontrado"))
Cambiar o agregar valores
dicc[clave] = valor
Si clave ya existía en el diccionario dicc, lo que hace es actualizar su valor. Si esa clave
no existía, la agrega con ese valor.
Siguiendo con el ejemplo del diccionario mascota:
mascota[“edad”] = 8 #se actualiza la edad dela mascota
mascota[“tamaño”]=”mediano” #esta clave y dato se agrega
Cambiar una clave.
Si por ejemplo en lugar de “edad” queremos que la clave sea “anios”, usamos el método
pop()
#cambiar la clave edad por anios y mantiene su valor
mascota[“anios”] = [Link](“edad”)
7
Python – Clase 3
CONJUNTOS
Un conjunto, es una colección de elementos no repetidos ni ordenada. Se representan
entre llaves {}.
Métodos de los conjuntos
OPERACIONES ENTRE CONJUNTOS.
Veremos sólo algunas.
Unión: El resultado contiene los elementos distintos de 2 o más conjuntos. Se usa la
método union() o el símbolo “|” entre los conjuntos.
a={1,8,9,1,7,1} #el conjunto tendrá sólo los elementos distintos
b={5, 4, 3, 6,7,8}
c=[Link](b)
d=a|b
print(c) {1, 3, 4, 5, 6, 7, 8, 9}
print(d) {1, 3, 4, 5, 6, 7, 8, 9}
Intersección: El resultado contiene los elementos únicamente presentes en todos los
conjuntos .Se usa la método “intersection()” o el símbolo “&“:
inter=[Link](b)
print(inter) {8, 7}
Diferencia: En este caso, se trata de restar (sacar) a un conjunto dado, los elementos del
otro. Se usa el método “difference()” o bien, el operador “–“:
diff1=a-b
print(diff1) {1, 9}
diff2=b-2
print(diff2) {3, 4, 5, 6}
Diferencia simétrica: El resultado contiene los elementos de los conjuntos, menos los
que se encuentran en la intersección (elementos comunes). Se usa el método
“symmetric_difference()“, o bien el símbolo “^“:
sdiff=a.symmetric_difference(b)
print(sdiff) {1, 3, 4, 5, 6, 9}
8
Python – Clase 3
OPERACIONES CON UN ÚNICO CONJUNTO.
Veremos sólo algunas.
Trabajamos con el conjunto animales
animales={'gato', 'perro', 'gallina'}
Comprobar existencia de un elemento. Usamos el operador in
print('gallina' in animales)
True
Eliminar elementos. Podemos usar los métodos discard o remove. discard no da error
si se trata de eliminar un elemento que no existe en el conjunto
[Link]('leon')
print(animales)
{'perro', 'gato', 'gallina'}
[Link]('gallina')
print(animales)
{'perro', 'gato'}
Añadir elementos: Usamos el método “add()” para añadir nuevos elementos a un
conjunto .
[Link]('jirafa')
print(animales)
{'perro', 'gato', 'jirafa'}